Úvod

Aspose.PDF FOSS for Go je čistě Go knihovna pro práci s PDF dokumenty. Poskytuje API pro vytváření nových PDF od nuly, otevírání a editaci existujících souborů, rozdělování dokumentů na výstupy po jednotlivých stránkách, slučování více PDF a aplikaci šifrování založeného na hesle — vše bez jakýchkoli nativních C nebo C++ závislostí.

Knihovna je k dispozici jako Go modul na github.com/aspose-pdf-foss/aspose-pdf-foss-for-go a je vydána pod licencí MIT. Vyžaduje Go 1.24+.

go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go

Tento příspěvek pokrývá hlavní funkce: operace s dokumenty, zabezpečení, vyplňování AcroForm, rozvržení tabulek, záložky a anotace.


Klíčové vlastnosti

Rozdělování a slučování dokumentů

Typ Document poskytuje Split() k rozdělení PDF na dokumenty po jednotlivých stránkách a Append() ke sloučení externího dokumentu na místě. PageRange vám umožňuje pracovat s podmnožinou stránek pro selektivní extrakci nebo export. Metadata zpřístupňuje pole informací o dokumentu pro čtení a zápis autora, názvu a data vytvoření.

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")

Šifrování heslem a oprávnění

EncryptionOptions nastavuje uživatelské heslo, heslo vlastníka a povolené operace v jediném volání SetEncryption. Podporované algoritmy jsou AES-128 (výchozí), AES-256 (ISO32000-2, vytváří výstup PDF2.0) a RC4-128 pro zpětnou kompatibilitu. Permissions vám umožňuje povolit nebo zakázat jednotlivé operace — tisk, kopírování, přístupnost — samostatně. OpenWithPassword otevírá šifrované soubory; RemoveEncryption odstraní heslo před uložením čisté kopie.

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")

AcroForm zpracování pole

Form poskytuje přístup ke všem AcroForm polím v dokumentu. Field je základní rozhraní; typové aserce poskytují přístup k TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField a ButtonField. Nastavte hodnoty polí podle názvu pole — prohlížeč automaticky regeneruje vzhledy pomocí /NeedAppearances=true při uložení.

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")

Rozvržení tabulky

Table, Row a Cell vytvářejí strukturované mřížkové rozvržení na stránkách PDF. BorderInfo nastavuje styl okraje pro každou buňku nebo pro celou tabulku. MarginInfo určuje vnitřní odsazení buňky. TextStyle řídí písmo, velikost, barvu a zarovnání pomocí HAlign a VAlign. Image lze umístit do buněk vedle textu.

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")

Záložky a navigace

OutlineItemCollection představuje jedinou položku záložky. Použijte SetTitle, SetBold, SetColor a SetDestination k jejímu nastavení. DestinationXYZ cílí na konkrétní souřadnici stránky; DestinationFit přizpůsobí stránku v prohlížeči. NamedDestinations registruje opakovaně použitelné cíle skoku přístupné podle názvu.

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")

Anotace a razítka

AnnotationCollection obsahuje všechny anotace na stránce. TextAnnotation přidá lepkavou poznámku. StampAnnotation umístí schvalovací nebo informační razítko pomocí jedné z předdefinovaných hodnot StampName. HighlightAnnotation označuje textové oblasti. RedactAnnotation trvale odstraňuje citlivý obsah. LinkAnnotation připojí URI nebo akce cíle stránky k kliknutelným oblastem.

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")

Rychlý start

Nainstalujte modul:

go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go

Minimální pracovní postup — otevřete PDF, zašifrujte jej pomocí hesla a uložte:

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")
}

Open Source a licencování

Aspose.PDF FOSS pro Go je vydáno pod licencí MIT. Neexistují žádná omezení používání, žádné poplatky za běh a žádné požadavky na registraci. Zdrojový kód je dostupný na github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.

Komerční využití je povoleno podle podmínek licence MIT. Pokud váš projekt vyžaduje podporu na úrovni podniku, rozšířené pokrytí formátů nebo integraci s cloudem, Aspose.PDF — Enterprise Product Family je samostatná komerční nabídka.


Začínáme

Související zdroje