Einleitung
Aspose.PDF FOSS für Go ist eine reine Go-Bibliothek zur Arbeit mit PDF-Dokumenten. Sie stellt ein API bereit, um neue PDFs von Grund auf zu erstellen, vorhandene Dateien zu öffnen und zu bearbeiten, Dokumente in einseitige Ausgaben zu splitten, mehrere PDFs zusammenzuführen und passwortbasierte Verschlüsselung anzuwenden — alles ohne native C- oder C++-Abhängigkeiten.
Die Bibliothek ist als Go-Modul unter github.com/aspose-pdf-foss/aspose-pdf-foss-for-go verfügbar und wird unter der MIT-Lizenz veröffentlicht. Benötigt Go1.24+.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goDieser Beitrag behandelt die Kernfunktionen: Dokumentoperationen, Sicherheit, AcroForm-Ausfüllung, Tabellengestaltung, Lesezeichen und Anmerkungen.
Hauptmerkmale
Dokumentaufteilung und -zusammenführung
Der Document-Typ bietet Split() zum Aufteilen eines PDFs in Einzelseiten-Dokumente und Append() zum Zusammenführen eines externen Dokuments an Ort und Stelle. PageRange ermöglicht das Arbeiten mit einer Teilmenge von Seiten für selektiven Export oder Extraktion. Metadata stellt Dokument-Info-Felder zum Lesen und Schreiben von Autor, Titel und Erstellungsdatum bereit.
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")
Passwortverschlüsselung und Berechtigungen
EncryptionOptions konfiguriert Benutzerpasswort, Besitzerpasswort und erlaubte Vorgänge in einem einzigen Aufruf von SetEncryption. Die unterstützten Algorithmen sind AES-128 (Standard), AES-256 (ISO32000-2, erzeugt PDF2.0-Ausgabe) und RC4-128 für Legacy-Kompatibilität. Permissions ermöglicht das Zulassen oder Verweigern einzelner Vorgänge – Drucken, Kopieren, Barrierefreiheit – unabhängig voneinander. OpenWithPassword öffnet verschlüsselte Dateien; RemoveEncryption entfernt das Passwort, bevor eine Klartextkopie gespeichert wird.
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 Feldverarbeitung
Form bietet Zugriff auf alle AcroForm-Felder in einem Dokument. Field ist die Basisschnittstelle; Typassertionen geben Zugriff auf TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField und ButtonField. Setzen Sie Feldwerte per Feldname — der Viewer regeneriert die Darstellungen automatisch über /NeedAppearances=true beim Speichern.
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")
Tabellenlayout
Table, Row und Cell erstellen strukturierte Rasterlayouts auf PDF-Seiten. BorderInfo konfiguriert den Randstil pro Zelle oder für die gesamte Tabelle. MarginInfo legt den Zellenabstand fest. TextStyle steuert Schriftart, Größe, Farbe und Ausrichtung über HAlign und VAlign. Image kann neben Text in Zellen platziert werden.
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")
Lesezeichen und Navigation
OutlineItemCollection repräsentiert einen einzelnen Lesezeicheneintrag. Verwenden Sie SetTitle, SetBold, SetColor und SetDestination, um ihn zu konfigurieren. DestinationXYZ zielt auf eine genaue Seitenkoordinate; DestinationFit passt die Seite im Betrachter an. NamedDestinations registriert wiederverwendbare Sprungziele, die über einen Namen erreichbar sind.
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")
Anmerkungen und Stempel
AnnotationCollection enthält alle Anmerkungen auf einer Seite. TextAnnotation fügt einen Haftnotiz-Kommentar hinzu. StampAnnotation platziert einen Genehmigungs- oder Informationsstempel mithilfe eines der vordefinierten StampName-Werte. HighlightAnnotation markiert Textbereiche. RedactAnnotation entfernt dauerhaft sensible Inhalte. LinkAnnotation verbindet URI- oder Seitenzielaktionen mit anklickbaren Bereichen.
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")
Schnellstart
Modul installieren:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goEin minimaler Arbeitsablauf — PDF öffnen, mit einem Passwort verschlüsseln und speichern:
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 und Lizenzierung
Aspose.PDF FOSS für Go wird unter der MIT-Lizenz veröffentlicht. Es gibt keine Nutzungsbeschränkungen, keine Laufzeitgebühren und keine Registrierungsanforderungen. Der Quellcode ist verfügbar unter github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.
Kommerzielle Nutzung ist gemäß den Bedingungen der MIT-Lizenz erlaubt. Wenn Ihr Projekt Enterprise-Support, erweiterte Formatunterstützung oder Cloud-Integration benötigt, ist Aspose.PDF — Enterprise Product Family ein separates kommerzielles Angebot.