Introduktion

Aspose.PDF FOSS för Go är ett ren-Go-bibliotek för att arbeta med PDF-dokument. Det exponerar en API för att skapa nya PDF-filer från grunden, öppna och redigera befintliga filer, dela dokument i en-sida-utdata, slå samman flera PDF-filer och tillämpa lösenordsbaserad kryptering — allt utan några inhemska C- eller C++-beroenden.

Biblioteket finns tillgängligt som en Go-modul på github.com/aspose-pdf-foss/aspose-pdf-foss-for-go och är släppt under MIT-licensen. Kräver Go 1.24+.

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

Detta inlägg täcker de grundläggande funktionerna: dokumentoperationer, säkerhet, AcroForm-fyllning, tabellayout, bokmärken och annoteringar.


Nyckelfunktioner

Dokumentuppdelning och sammanslagning

Typen Document tillhandahåller Split() för att dela en PDF i dokument per sida och Append() för att slå ihop ett externt dokument på plats. PageRange låter dig arbeta med ett delmängd av sidor för selektiv extraktion eller export. Metadata exponerar dokument-infofält för att läsa och skriva författare, titel och skapelsedatum.

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

Lösenordskryptering och behörigheter

EncryptionOptions konfigurerar användarlösenord, ägarlösenord och tillåtna operationer i ett enda anrop till SetEncryption. De stödjade algoritmerna är AES-128 (standard), AES-256 (ISO 32000-2, producerar PDF 2.0-utdata) och RC4-128 för äldre kompatibilitet. Permissions låter dig tillåta eller neka enskilda operationer — utskrift, kopiering, tillgänglighet — oberoende av varandra. OpenWithPassword öppnar krypterade filer; RemoveEncryption tar bort lösenordet innan en klartextkopia sparas.

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 fältbehandling

Form ger åtkomst till alla AcroForm-fält i ett dokument. Field är basgränssnittet; typ-assertioner ger åtkomst till TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField och ButtonField. Ställ in fältvärden genom fältnamn — visaren regenererar utseenden automatiskt via /NeedAppearances=true vid sparande.

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

Tabellayout

Table, Row och Cell bygger strukturerade rutnätslayouter på PDF-sidor. BorderInfo konfigurerar kantstil per cell eller för hela tabellen. MarginInfo anger cellutfyllnad. TextStyle styr teckensnitt, storlek, färg och justering via HAlign och VAlign. Image kan placeras i celler tillsammans med text.

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

Bokmärken och navigering

OutlineItemCollection representerar en enskild bokmärkespost. Använd SetTitle, SetBold, SetColor och SetDestination för att konfigurera den. DestinationXYZ riktar in sig på en exakt sidkoordinat; DestinationFit anpassar sidan i visaren. NamedDestinations registrerar återanvändbara hoppmål som är åtkomliga via namn.

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

Anmärkningar och Stämplar

AnnotationCollection innehåller alla anmärkningar på en sida. TextAnnotation lägger till en klistermärkeskommentar. StampAnnotation placerar en godkännande- eller informationsstämpel med hjälp av ett av de fördefinierade StampName-värdena. HighlightAnnotation markerar textområden. RedactAnnotation tar permanent bort känsligt innehåll. LinkAnnotation bifogar URI- eller sidestination-åtgärder till klickbara områden.

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

Snabbstart

Installera modulen:

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

Ett minimalt arbetsflöde — öppna en PDF, kryptera den med ett lösenord och spara:

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

Öppen källkod och licensiering

Aspose.PDF FOSS för Go är släppt under MIT-licensen. Det finns inga användningsrestriktioner, inga körningsavgifter och inga registreringskrav. Källkoden finns på github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.

Kommersiell användning är tillåten enligt MIT-licensens villkor. Om ditt projekt kräver företagsstöd, utökad formattäckning eller molnintegration, är Aspose.PDF — Enterprise Product Family ett separat kommersiellt erbjudande.


Komma igång

Relaterade resurser