Cazuri de utilizare comune pentru Aspose.PDF FOSS for Go
Aspose.PDF FOSS for Go is a pure-Go module for PDF document management. This article acoperă operaţiunile necesare cel mai frecvent, utilizând sistemul de control al Document, Form, EncryptionOptions, Table, și OutlineItemCollection Instalarea cu: go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.
Ghid pas cu pas
Pasul 1: Instalați pachetul
Adăugați modulul Go dependent:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goPasul 2: Importarea pachetului
Utilizați un alias pentru a menține referințele la import concise:
import (
"fmt"
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)Pasul 3: Divizionați un PDF în fișiere pe pagină
Document.Split împărți un document cu mai multe pagini într-un singur *Document pe pagină.
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))Pasul 4: Amestecarea mai multor fişiere PDF într-un singur fişer
Document.Append se alătură paginile dintr-un alt document în locul lor înainte de a fi salvate.
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")Pasul 5: Aplicați criptarea cu parolă
EncryptionOptions configurează parola utilizatorului, parola proprietarului și algoritmul; per operațiune Permissions într-o singură cerere:
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")Pentru a produce o copie text simplu dintr-un fișier criptat:
doc, _ := pdf.OpenWithPassword("contract_protected.pdf", "clientpass")
doc.RemoveEncryption()
doc.Save("contract_decrypted.pdf")Pasul 6: Completați un AcroForm
Iterati sau indicați câmpurile de destinație după nume.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")Pasul 7: Construiţi o structură a mesei
Adăugaţi un Table cu: Row și de: Cell intrări pe o pagină pentru generarea facturii sau a raportului:
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")Pasul 8: Adăugați un arbore de bookmark-uri
OutlineItemCollection creează bookmark-uri cu nesting capitol/secțiune și DestinationXYZ obiectivele paginii:
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")Probleme comune şi soluţii
pdf.Open returnă o eroare pentru fișiere PDF valabile Verificați că calea fișierului este corectă și că fișierul nu este deschis în alt format. Pe Windows, blocare de fișiere poate împiedica citirea.
Tipuri de semnale de tip “Panic” la accesarea câmpurilor formularului Utilizare: pdf.FieldType(f) sau un comutator de tip pentru a inspecta tipul câmpului înainte de A. În cazul în care: *pdf.TextBoxField afirmație privind o CheckboxField va intra în panică.
go get nu funcționează cu “module not found” Asigurarea GOPROXY este setat pe un proxy accesibil (de exemplu,. GOPROXY=direct) și că reţeaua ta poate ajunge la github.com.În mediile cu goluri de aer, utilizarea GONOSUMCHECK sau o oglindă locală a modulului.
SaveTo nu funcţionează după OpenWithPassword Dacă sunăţi… Save după ce: OpenWithPassword fără să sun. RemoveEncryption, ieşirea este re-criptată cu parola originală. Acesta este cel aşteptat comportamentul apelul RemoveEncryption în mod explicit pentru a produce o copie text simplu.
Numărul de pagini al documentului fuzionat este greșit Append Asigură-te că nu sună. Append în un document care a fost deja salvat; redeschideți documentul de bază dacă este necesar pentru a construi mai multe produse fusionate.
Întrebări frecvente
Pot să prelucrez fişiere PDF fără a scrie pe disc?
Document.WriteTo acceptă o io.Writer, astfel încât să poți scrie la un buffer, rețea flux, sau scriitor de răspuns fără a crea un fișier temporar.
Este sigur să utilizați Aspose.PDF FOSS pentru Go în același timp?
Fiecare *Document Instanța nu este goroutine-sigur. Folosiți una Document pe goroutine, sau protejați instantele partajate cu un mutex.
Cum citesc valorile câmpului dintr-un formular completat?
Utilizare: Field.Value() pe orice câmp sau însemn de tip pentru accesul la accesorii specifici unui tip. cum ar fi: CheckboxField.Checked() sau de: ComboBoxField.SelectedIndex().
Pot crea un PDF de la zero fără o șablonă existentă?
- Da, am fost.
pdf.NewDocument()creează un document gol.AddBlankPageFromFormat(pdf.PageFormatA4)să adăugați o pagină goală, apoi adaugăm conținut (tabele, anotații etc.) înainte de a salva.
Care este diferenţa între: Document.Save și de: Document.WriteTo?
Save(path string) scrie la o cale de fişier. WriteTo(w io.Writer) scrie oricui. io.Writer util pentru răspunsuri HTTP, bufere sau conducte de flux.