Cas d'utilisation courante pour Aspose.PDF FOSS pour Go
Aspose.PDF FOSS for Go is a pure-Go module for PDF document management. This article couvre les opérations les plus fréquemment nécessaires en utilisant le Document, Form, EncryptionOptions, Table,et OutlineItemCollection Type : Installation avec go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.
Guide étape par étapes
Étape 1 : Installer le package
Ajouter la dépendance du module Go :
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goÉtape 2 : Importer le paquet
Utilisez un alias pour garder les références d’importation concises :
import (
"fmt"
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)Étape 3 : Diviser un PDF en fichiers par page
Document.Split Diviser un document multi-page en une *Document par page.
doc, err := pdf.Open("report.pdf")
if err != nil {
panic(err)
}
pages, _ := doc.Split()
for i, p := range pages {
p.Save(fmt.Sprintf("report_page_%03d.pdf", i+1))
}
fmt.Printf("Split %d pages\n", len(pages))Étape 4 : Mettre plusieurs PDFs dans un
Document.Append Mélanger des pages d’un second document en place avant de sauvegarder.
base, _ := pdf.Open("intro.pdf")
chapter1, _ := pdf.Open("chapter1.pdf")
chapter2, _ := pdf.Open("chapter2.pdf")
appendix, _ := pdf.Open("appendix.pdf")
base.Append(chapter1)
base.Append(chapter2)
base.Append(appendix)
base.Save("full_document.pdf")Étape 5 : Application de la cryptage de mot de passe
EncryptionOptions Configurer le mot de passe utilisateur, le propriétaire, l’algorithme et Per-opération Permissions Dans un seul appel :
doc, _ := pdf.Open("contract.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "clientpass",
OwnerPassword: "adminpass",
Permissions: &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("contract_protected.pdf")Pour produire une copie de plaintext d’un fichier crypté :
doc, _ := pdf.OpenWithPassword("contract_protected.pdf", "clientpass")
doc.RemoveEncryption()
doc.Save("contract_decrypted.pdf")Étape 6 : Remplissez un AcroForm
- les champs d’intérêt ou de cible par nom. assertez le type concret (
TextBoxField,CheckboxField,RadioButtonField,ComboBoxField,ListBoxField).
doc, _ := pdf.Open("application_form.pdf")
name := doc.Form().Field("applicant_name").(*pdf.TextBoxField)
name.SetValue("Jane Doe")
agree := doc.Form().Field("terms_accepted").(*pdf.CheckboxField)
agree.SetChecked(true)
country := doc.Form().Field("country").(*pdf.ComboBoxField)
country.SetSelected(0)
doc.Save("application_filled.pdf")Étape 7 : Créer un tableau de table
Ajouter A Table avec Row et Cell Entrer sur une page pour la facture ou le rapport génération:
doc, _ := pdf.Open("invoice_template.pdf")
page, _ := doc.Page(1)
tbl := pdf.NewTable()
tbl.SetColumnWidths([]float64{200, 80, 100})
header := tbl.AddRow()
header.AddCell("Description")
header.AddCell("Qty")
header.AddCell("Amount")
row := tbl.AddRow()
row.AddCell("PDF Processing Service")
row.AddCell("1")
row.AddCell("$500.00")
page.AddTable(tbl, pdf.Rectangle{LLX: 72, LLY: 100, URX: 540, URY: 700})
doc.Save("invoice.pdf")Étape 8 : Ajouter un arbre de marqueur
OutlineItemCollection Créer des notes avec un chapitre/section et DestinationXYZ Les cibles de page :
doc, _ := pdf.Open("manual.pdf")
page1, _ := doc.Page(1)
page2, _ := doc.Page(2)
ch1 := pdf.NewOutlineItemCollection(doc)
ch1.SetTitle("Introduction")
ch1.SetBold(true)
ch1.SetDestination(pdf.NewDestinationXYZ(page1, 0, 792, 1.0))
doc.Outlines().Add(ch1)
ch2 := pdf.NewOutlineItemCollection(doc)
ch2.SetTitle("Configuration")
ch2.SetDestination(pdf.NewDestinationFit(page2))
doc.Outlines().Add(ch2)
doc.Save("manual_bookmarked.pdf")Problèmes communs et fixations
pdf.Open Retourner un erreur pour les fichiers PDF valides Vérifiez que le fichier est correct et que ce fichie n’est pas ouvert dans un autre fichu. Dans Windows, le blocage des fichiers peut empêcher la lecture.
Type de panic d’affirmation lors de l’accès aux champs de formulaire Utiliser pdf.FieldType(f) ou un type de changement pour vérifier le type du champ avant A. Le fait d’A *pdf.TextBoxField L’affirmation sur A CheckboxField Il va paniquer.
go get « Module non trouvé » assure GOPROXY Il est mis à disposition d’un proxy accessible (par exemple,. GOPROXY=directet ce que Votre réseau peut atteindre github.com.Dans les environnements à air, utilisez-les GONOSUMCHECK Un miroir de module local.
Sauvegarder échoue après OpenWithPassword Si vous appelez Save Après OpenWithPassword Sans appel RemoveEncryption, la sortie est réencryptée avec le mot de passe original. c’est ce que l’on attend Chapitre - Appel RemoveEncryption Pour produire une copie de plaintext.
Le nombre de pages d’un document enregistré est erroné Append Mutage le destinataire en place. assurez-vous que vous ne téléphonez pas Append sur un document déjà sauvé; réouverture du document de base si vous avez besoin Construire plusieurs outils mélangés.
Questions fréquemment posées
Puis-je traiter les PDF sans écrire sur le disque ?
Document.WriteTo accepte une io.Writer,Vous pouvez donc écrire à un buffer, réseau. Stream, ou réaction écrivain sans créer un fichier temporaire.
Est-il sûr d’utiliser Aspose.PDF FOSS pour Go en même temps ?
Chacun *Document La méthode n’est pas sûre.Utilisez un Document par la gorille, ou protéger les exemples partagés avec un mutex.
Comment puis-je réécrire les valeurs de champ d’un formulaire rempli ?
Utiliser Field.Value() sur tout champ ou type-assurance pour accéder aux accessoires spécifiques à type Comme comme CheckboxField.Checked() ou ComboBoxField.SelectedIndex().
Puis-je créer un PDF de la scratch sans un modèle existant?
Oui oui. pdf.NewDocument() Créer un document vide. appeler AddBlankPageFromFormat(pdf.PageFormatA4) pour ajouter une page blanche, puis ajoutez du contenu (tables, notes, etc.) avant de sauvegarder.
Quelle est la différence entre Document.Save et Document.WriteTo?
Save(path string) Il s’adresse à un fichier. WriteTo(w io.Writer) Écrire à n’importe quel io.Writer Utiles pour les réponses HTTP, buffers ou pipelines de courant.