Questions fréquemment posées
Licence et Open Source
Quelle est la licence pour Aspose.PDF FOSS for Go ?
Aspose.PDF FOSS for Go is released under the Licence de MIT.Le texte de licence est complet inclus dans le repository à github.com/aspose-pdf-foss/axe-PDF-Foss-for-go. Aucune enregistrement, fichier d’activation ou clé de temps de fonctionnement n’est nécessaire.
Puis-je utiliser Aspose.PDF FOSS pour Go dans un produit commercial?
Oui. la licence MIT permet un usage commercial illimité, modification, distribution et utilisation privée. Vous devez inclure l’avis de copyright et le texte de licence du MIT dans toutes les copies ou parties substantielles du logiciel.
Y a-t-il une version d’entreprise ?
Aspose.PDF FOSS is the open-source, MIT-licensed edition. A separate commercial Aspose.PDF product is available as the Aspose.PDF — Enterprise Product Family Avec un support d’entreprise, une couverture de format étendue et une intégration dans le cloud.
Installation et exigences
Comment installer Aspose.PDF FOSS pour Go ?
Ajouter le module à votre projet Go :
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goImporter avec un alias dans vos fichiers source :
import pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"Quelle version Go est requise ?
Go 1.24 ou plus tard est nécessaire. vérifier votre version avec go version.
Y a-t-il des bibliothèques autochtones ou systémiques ?
No. Aspose.PDF FOSS for Go est une mise en œuvre pure-Go avec aucune dépendance C, C++ ou CGo. Il ne nécessite pas de bibliothèques système, des lecteurs PDF, ni d’outils externes.
Utilisation de l’API
Comment puis-je ouvrir un PDF existant ?
Utiliser pdf.Open pour les PDF standard et pdf.OpenWithPassword Pour les fichiers protégés par mot de passe :
doc, err := pdf.Open("document.pdf")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount())Comment puis-je diviser un PDF en pages individuelles ?
Document.Split Retour à A []*Document,1 par page :
doc, _ := pdf.Open("report.pdf")
pages, _ := doc.Split()
for i, p := range pages {
p.Save(fmt.Sprintf("page_%03d.pdf", i+1))
}Comment puis-je combiner plusieurs PDF ?
Document.Append Un document source est mis en place :
base, _ := pdf.Open("part1.pdf")
part2, _ := pdf.Open("part2.pdf")
base.Append(part2)
base.Save("combined.pdf")Comment puis-je remplir un champ AcroForm ?
Utiliser Document.Form().Field(name) Et il y a le type concret :
doc, _ := pdf.Open("form.pdf")
text := doc.Form().Field("customer_name").(*pdf.TextBoxField)
text.SetValue("Jane Doe")
check := doc.Form().Field("agree").(*pdf.CheckboxField)
check.SetChecked(true)
doc.Save("form_filled.pdf")Types de champs soutenus : TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ButtonField.
Comment ajouter des bookmarks ?
Créer un OutlineItemCollection et à mettre un Destination:
doc, _ := pdf.Open("manual.pdf")
page, _ := doc.Page(1)
bm := pdf.NewOutlineItemCollection(doc)
bm.SetTitle("Chapter 1")
bm.SetDestination(pdf.NewDestinationXYZ(page, 0, 800, 1.0))
doc.Outlines().Add(bm)
doc.Save("manual_with_bookmarks.pdf")Sécurité et cryptage
Comment puis-je protéger un PDF ?
Utiliser Document.SetEncryption Avec un EncryptionOptions Fournir un mot de passe utilisateur pour ouvrir le fichier et un code propriétaire pour les droits de modification:
doc, _ := pdf.Open("doc.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "userpass",
OwnerPassword: "ownerpass",
Permissions: &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("doc_protected.pdf")Quels algorithmes de cryptage sont soutenus ?
Trois algorithmes sont disponibles sur le EncryptionOptions.Algorithm:
| Algoritme | constants | Standard |
|---|---|---|
| AES-128 | EncryptionAlgAES128 (defaut à la fois) | ISO 32000-1 |
| AES-256 | EncryptionAlgAES256 | ISO 32000-2 (PDF 2.0) - Résultats de la norme |
| RC4-128 | EncryptionAlgRC4_128 | héritage |
Comment puis-je ouvrir un fichier protégé par mot de passe ?
Utiliser pdf.OpenWithPassword lorsque le fichier nécessite l’authentification. Passez la parole d’utilisateur comme deuxième argument; il retourne un normal *Document Une fois que la décryption réussit :
doc, err := pdf.OpenWithPassword("protected.pdf", "userpass")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount())Comment puis-je supprimer la cryptage d’un PDF ?
Appel à Document.RemoveEncryption après avoir ouvert le fichier avec la bonne mot de passe. Sauver le résultat pour écrire une copie non chiffrée:
doc, _ := pdf.OpenWithPassword("protected.pdf", "userpass")
doc.RemoveEncryption()
doc.Save("decrypted.pdf")Rendering et texte
Comment rendre une page PDF à une image ?
Utilisez l’un des types d’appareils : BmpDevice, PngDevice, JpegDevice, TiffDevice,ou GifDevice.Construire l’appareil avec un Resolution valeur et appeler le correspondant Render* méthode avec un io.Writer et RenderOptions:
doc, _ := pdf.Open("report.pdf")
page, _ := doc.Page(1)
f, _ := os.Create("page1.png")
defer f.Close()
page.RenderPNG(f, pdf.RenderOptions{DPI: 150})Comment puis-je rechercher un texte dans un PDF ?
Appel à Document.SearchText Avec une question de la ligne et SearchOptions.Le résultat est un Le slice de TextMatch valeurs – chacune porte le texte correspondant, son index de page et sa La boîte de bord.
doc, _ := pdf.Open("doc.pdf")
matches, _ := doc.SearchText("total", pdf.SearchOptions{CaseInsensitive: true})
for _, m := range matches {
fmt.Printf("page %d: %q\n", m.PageNumber, m.Text)
}Comment faire une forme ?
Appel à Document.Flatten après avoir rempli ou révisé un formulaire. la méthode est enregistrée dans tout le champ les valeurs dans le graphique de page et supprime les champs de formulaire interactifs :
doc, _ := pdf.Open("filled.pdf")
doc.Flatten()
doc.Save("flat.pdf")Les limites connues
Toutes les fonctionnalités PDF sont-elles soutenues ?
La bibliothèque couvre les opérations de gestion des documents les plus courantes: ouvrir, créer, enregistrer, diviser, fusionner, extraire la page, cryptation, AcroForms, tables, notes, rendu à l’image, recherche de texte et flatter le formulaire. Caractéristiques avancées telles que les signatures numériques, contenus 3D et conversion PDF/A ne peuvent pas être pleinement mises en œuvre dans la version actuelle. Vérifiez le repository README pour le statut actuel de fonctionnalité.
Que se passe-t-il si je utilise une affirmation de type de champ qui ne correspond pas ?
Un type d’affirmation sur Field Ce qui ne correspond pas au type de champ réel sera panique. Utiliser pdf.FieldType(f) Pour vérifier le type avant de dire, ou utiliser un switch type:
doc, _ := pdf.Open("form.pdf")
for _, f := range doc.Form().Fields() {
switch v := f.(type) {
case *pdf.TextBoxField:
fmt.Println("text:", v.Value())
case *pdf.CheckboxField:
fmt.Println("checked:", v.Checked())
}
}