Introducere
Aspose.PDF FOSS for Go is a pure-Go library for working with PDF documents. It exposes an API pentru crearea de noi fișiere PDF din zero, deschiderea și editarea fișierelor existente, împărțirea documentele în ieșiri pe pagină, combinând mai multe PDF-uri și aplicarea bazată pe parolă; criptare toate fără dependențe native C sau C++.
Biblioteca este disponibilă ca un modul Go la: github.com/aspose-pdf-foss/aspose-pdf-foss-for-go şi este eliberat sub licenţa MIT. Instalaţi-o cu: go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go în orice Proiectul 1.24+.
Acest articol acoperă funcțiile de bază: operațiuni document, securitate, completarea AcroForm-ului, amenajarea tabelurilor, bookmark-urile și anotațiile.
Caracteristici cheie
Diviziunea și fuzionarea documentelor
În ceea ce priveşte Document tip oferă Split() pentru a împărți un PDF în documente pe pagină și Append() pentru a uni un document extern în loc. PageRange te lasă să lucrezi cu un subset de pagini pentru extracție sau export selectiv. Metadata expuneri câmpurile de informații ale documentului pentru citire și scriere autor, titlu și data creării.
doc, _ := pdf.Open("report.pdf")
// Split into per-page PDFs
pages, _ := doc.Split()
for i, p := range pages {
p.Save(fmt.Sprintf("page%03d.pdf", i+1))
}
// Merge a second PDF into doc
doc2, _ := pdf.Open("appendix.pdf")
doc.Append(doc2)
doc.Save("combined.pdf")
Criptarea şi permisiunile cu parolă
EncryptionOptions configurează parola utilizatorului, parola proprietarilor și operațiunile permise în un singur apel la: SetEncryption.Algoritmii sprijiniţi sunt AES-128 (default), AES-256 (ISO 32000-2, produce ieșire PDF 2.0) și RC4-128 pentru compatibilitatea veche. Permissions permite să se permită sau refuze operațiuni individuale imprimare, copie, accesibilitate ?? în mod independent. OpenWithPassword deschide fișiere criptate; RemoveEncryption scoate din parola înainte de a salva o copie text simplu.
doc, _ := pdf.Open("contract.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "userpass",
OwnerPassword: "ownerpass",
Permissions: &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("contract_protected.pdf")
Procesarea câmpului AcroForm
Form oferă acces la toate câmpurile AcroForm dintr-un document. Field este baza Interfață; afirmațiile de tip oferă acces la TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, și ButtonField.- Setarea terenului . valorile după numele câmpului vizualizatorul regenerează apariturile automat prin intermediul /NeedAppearances=true În salvare.
doc, _ := pdf.Open("application.pdf")
text := doc.Form().Field("full_name").(*pdf.TextBoxField)
text.SetValue("Jane Doe")
check := doc.Form().Field("agree_terms").(*pdf.CheckboxField)
check.SetChecked(true)
combo := doc.Form().Field("country").(*pdf.ComboBoxField)
combo.SetSelected(0)
doc.Save("application_filled.pdf")
Dispozitivul tabelului
Table, Row, și Cell construirea de layout-uri structurate pe pagini PDF. BorderInfo configurează stilul de margine pentru fiecare celulă sau pentru întreaga tabelă. MarginInfo Seturi de umplutură celulare. TextStyle controlează fontul, mărimea, culoarea și alinierea prin intermediul HAlign și de: VAlign. Image poate fi plasat în interiorul celulelor de lângă text.
doc, _ := pdf.Open("invoice_template.pdf")
tbl := pdf.NewTable()
tbl.SetColumnWidths([]float64{120, 80, 80})
row := tbl.AddRow()
row.AddCell("Item")
row.AddCell("Qty")
row.AddCell("Price")
page, _ := doc.Page(1)
page.AddTable(tbl, pdf.Rectangle{LLX: 72, LLY: 100, URX: 540, URY: 700})
doc.Save("invoice.pdf")
Semne de carte şi navigare
OutlineItemCollection reprezintă o singură intrare de marcator. Utilizați SetTitle, SetBold, SetColor, și SetDestination să-l configureze. DestinationXYZ Ţintele sunt exact: coordonatele paginii; DestinationFit se potriveşte paginii din vizualizator. NamedDestinations înregistrează țintele de salt reutilizabile accesibile prin nume.
doc, _ := pdf.Open("manual.pdf")
page, _ := doc.Page(1)
chapter := pdf.NewOutlineItemCollection(doc)
chapter.SetTitle("Chapter 1: Getting Started")
chapter.SetBold(true)
chapter.SetDestination(pdf.NewDestinationXYZ(page, 0, 800, 1.0))
doc.Outlines().Add(chapter)
section := pdf.NewOutlineItemCollection(doc)
section.SetTitle("Installation")
section.SetDestination(pdf.NewDestinationFit(page))
chapter.Add(section)
doc.Save("manual_with_bookmarks.pdf")
Anotări și timbre
AnnotationCollection Conţine toate anotaţiile de pe o pagină. TextAnnotation adaugă o notă de pe lemn. comentariu. StampAnnotation se plasează un timbru de omologare sau informație prin utilizarea unuia dintre următoarele: predefinit StampName valorile. HighlightAnnotation semnează regiunile de text. RedactAnnotation elimină permanent conținutul sensibil. LinkAnnotation atașează URI sau pagina-destinație acțiuni către regiunile care pot fi clicate.
doc, _ := pdf.Open("draft.pdf")
page, _ := doc.Page(1)
stamp := pdf.NewStampAnnotation(page, pdf.Rectangle{LLX: 100, LLY: 700, URX: 250, URY: 750}, pdf.StampNameApproved)
page.Annotations().Add(stamp)
doc.Save("draft_approved.pdf")
Început rapid
Instalează modulul:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go
Un flux minim de lucru deschideți un PDF, criptați-l cu o parolă și salvați:
package main
import (
"fmt"
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)
func main() {
doc, err := pdf.Open("input.pdf")
if err != nil {
panic(err)
}
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "secret",
OwnerPassword: "ownerSecret",
Permissions: &pdf.Permissions{AllowPrint: true},
})
if err := doc.Save("output_encrypted.pdf"); err != nil {
panic(err)
}
fmt.Println("Saved output_encrypted.pdf")
}
Sursă deschisă și licență
Aspose.PDF FOSS for Go is released under the MIT license. There are no usage restrictions, Codul sursă este disponibil la WEB github.com/aspose-pdf-foss/asspose - pdf-Foss-for-go.
Utilizarea comercială este permisă în conformitate cu termenii licenței MIT. Dacă proiectul dumneavoastră necesită suport la nivel de întreprindere, acoperire extinsă format sau integrare în cloud, Aspose.PDF — Enterprise Product Family este un sistem separat. Oferta comercială.