Introductie

Aspose.PDF FOSS for Go is een pure-Go bibliotheek voor het werken met PDF-documenten. Het biedt een API voor het maken van nieuwe PDF’s vanaf nul, het openen en bewerken van bestaande bestanden, het splitsen van documenten in per-pagina-uitvoer, het samenvoegen van meerdere PDF’s, en het toepassen van wachtwoordgebaseerde versleuteling — allemaal zonder native C- of C++-afhankelijkheden.

De bibliotheek is beschikbaar als een Go-module op github.com/aspose-pdf-foss/aspose-pdf-foss-for-go en wordt uitgebracht onder de MIT-licentie. Vereist Go 1.24+.

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

Deze post behandelt de kernfunctionaliteiten: documentbewerkingen, beveiliging, AcroForm invullen, tabelindeling, bladwijzers en annotaties.


Belangrijkste functies

Documenten splitsen en samenvoegen

Het Document type biedt Split() om een PDF op te delen in documenten per pagina en Append() om een extern document ter plekke samen te voegen. PageRange stelt je in staat om met een subset van pagina’s te werken voor selectieve extractie of export. Metadata maakt document-informatievelden beschikbaar voor het lezen en schrijven van auteur, titel en aanmaakdatum.

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

Wachtwoordversleuteling en Machtigingen

EncryptionOptions configureert gebruikerswachtwoord, eigenarenwachtwoord en toegestane bewerkingen in één oproep naar SetEncryption. De ondersteunde algoritmen zijn AES-128 (de standaard), AES-256 (ISO 32000-2, produceert PDF 2.0-output), en RC4-128 voor legacy-compatibiliteit. Permissions stelt je in staat om individuele bewerkingen — afdrukken, kopiëren, toegankelijkheid — onafhankelijk toe te staan of te weigeren. OpenWithPassword opent versleutelde bestanden; RemoveEncryption verwijdert het wachtwoord voordat een platte-tekstkopie wordt opgeslagen.

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 Veldverwerking

Form biedt toegang tot alle AcroForm velden in een document. Field is de basisinterface; type-asserties geven toegang tot TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField en ButtonField. Stel veldwaarden in op basis van veldnaam — de viewer regenereert automatisch de weergaven via /NeedAppearances=true bij opslaan.

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

Tabelindeling

Table, Row en Cell bouwen gestructureerde rasterindelingen op PDF-pagina’s. BorderInfo configureert de randstijl per cel of voor de hele tabel. MarginInfo stelt de celvulling in. TextStyle regelt lettertype, grootte, kleur en uitlijning via HAlign en VAlign. Image kan binnen cellen naast tekst worden geplaatst.

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

Bladwijzers en Navigatie

OutlineItemCollection vertegenwoordigt een enkel bladwijzeritem. Gebruik SetTitle, SetBold, SetColor en SetDestination om het te configureren. DestinationXYZ richt zich op een exacte paginacoördinaat; DestinationFit past de pagina in de viewer. NamedDestinations registreert herbruikbare springdoelen die per naam toegankelijk zijn.

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

Annotaties en Stempels

AnnotationCollection bevat alle annotaties op een pagina. TextAnnotation voegt een plaknotitie-commentaar toe. StampAnnotation plaatst een goedkeurings- of informatiestempel met behulp van een van de vooraf gedefinieerde StampName waarden. HighlightAnnotation markeert tekstgebieden. RedactAnnotation verwijdert permanent gevoelige inhoud. LinkAnnotation koppelt URI- of paginadestinatietaken aan klikbare gebieden.

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

Snelstart

Installeer de module:

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

Een minimale workflow — open een PDF, versleutel deze met een wachtwoord, en sla op:

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 en licentiëring

Aspose.PDF FOSS voor Go wordt uitgebracht onder de MIT-licentie. Er zijn geen gebruiksbeperkingen, geen runtimekosten en geen registratievereisten. De broncode is beschikbaar op github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.

Commercieel gebruik is toegestaan onder de voorwaarden van de MIT-licentie. Als uw project enterprise-ondersteuning, uitgebreide formaatondersteuning of cloudintegratie vereist, is de Aspose.PDF — Enterprise Product Family een afzonderlijk commercieel aanbod.


Aan de slag

Gerelateerde bronnen