Běžné případy použití pro Aspose.PDF FOSS for Go

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-go

Prů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-go

Krok 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.


Viz také:

 Čeština