Běžné případy použití pro Aspose.PDF FOSS for Go
Aspose.PDF FOSS for Go je čistě Go modul pro správu PDF dokumentů. Tento článek pokrývá nejčastěji potřebné operace pomocí typů Document, Form, EncryptionOptions, Table a OutlineItemCollection.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goPrůvodce krok za krokem
Krok 1: Nainstalujte balíček
Přidejte závislost Go modulu:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goKrok 2: Importujte balíček
Použijte alias, aby byly odkazy na import stručné:
import (
"fmt"
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)Krok 3: Rozdělení PDF na soubory po jednotlivých stránkách
Document.Split rozdělí vícestránkový dokument na jeden *Document na stránku.
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))Krok 4: Sloučit více PDF do jednoho
Document.Append sloučí stránky z druhého dokumentu na místě před uložením.
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")Krok 5: Aplikovat šifrování heslem
EncryptionOptions konfiguruje uživatelské heslo, heslo vlastníka, algoritmus a Permissions pro každou operaci v jediném volání:
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")Pro vytvoření kopie v prostém textu ze šifrovaného souboru:
doc, _ := pdf.OpenWithPassword("contract_protected.pdf", "clientpass")
doc.RemoveEncryption()
doc.Save("contract_decrypted.pdf")Krok 6: Vyplňte AcroForm
Iterujte nebo cílete pole podle názvu. Ověřte konkrétní typ (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")Krok 7: Vytvořte rozložení tabulky
Přidejte Table s Row a Cell položkami na stránku pro generování faktury nebo zprávy:
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")Krok 8: Přidejte strom záložek
OutlineItemCollection vytváří záložky s vnořením kapitol/sekcí a DestinationXYZ cílovými stránkami:
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")Časté problémy a opravy
pdf.Open vrací chybu pro platné PDF soubory Zkontrolujte, že cesta k souboru je správná a že soubor není otevřen v jiném procesu. Ve Windows může zamykání souborů zabránit čtení.
panic při type assertion při přístupu k polím formuláře Použijte pdf.FieldType(f) nebo type switch k prozkoumání typu pole před aserce. A *pdf.TextBoxField aserce na CheckboxField vyvolá paniku.
go get selže s “module not found” Ensure GOPROXY je nastaven na dosažitelný proxy (např. GOPROXY=direct) a že vaše síť může dosáhnout github.com. V prostředích bez připojení k síti použijte GONOSUMCHECK nebo místní zrcadlo modulů.
SaveTo selže po OpenWithPassword Pokud zavoláte Save after OpenWithPassword bez volání RemoveEncryption, výstup je znovu zašifrován původním heslem. Toto je očekávané chování — zavolejte RemoveEncryption explicitně k vytvoření čisté textové kopie.
Počet stránek sloučeného dokumentu je nesprávný Append mutuje příjemce na místě. Ujistěte se, že nevoláte Append na dokumentu, který již byl uložen; znovu otevřete základní dokument, pokud potřebujete vytvořit více sloučených výstupů.
Často kladené otázky
Mohu zpracovávat PDF soubory bez zápisu na disk?
Document.WriteTo přijímá io.Writer, takže můžete zapisovat do bufferu, síťového proudu nebo response writeru, aniž byste museli vytvářet dočasný soubor.
Je bezpečné používat Aspose.PDF FOSS pro Go souběžně?
Každá instance *Document není bezpečná pro goroutine. Používejte jeden Document na goroutine, nebo chraňte sdílené instance pomocí mutexu.
Jak mohu načíst hodnoty polí z vyplněného formuláře?
Použijte Field.Value() na libovolném poli nebo použijte type-assert pro přístup k typově specifickým přístupům, jako jsou CheckboxField.Checked() nebo ComboBoxField.SelectedIndex().
Mohu vytvořit PDF od začátku bez existující šablony?
Ano. pdf.NewDocument() vytvoří prázdný dokument. Zavolejte AddBlankPageFromFormat(pdf.PageFormatA4) k přidání prázdné stránky, poté přidejte obsah (tabulky, anotace atd.) před uložením.
Jaký je rozdíl mezi Document.Save a Document.WriteTo?
Save(path string) zapisuje do cesty k souboru. WriteTo(w io.Writer) zapisuje do libovolného io.Writer — užitečné pro HTTP odpovědi, buffery nebo streamové pipeline.