Häufig gestellte Fragen
Lizenzierung und Open Source
Wie lautet die Lizenz für Aspose.PDF FOSS für Go?
Aspose.PDF FOSS für Go wird unter der MIT License. Der vollständige Lizenztext ist im Repository unter github.com/aspose-pdf-foss/aspose-pdf-foss-for-go. Keine Registrierung, keine Aktivierungsdatei und kein Laufzeitschlüssel sind erforderlich.
Kann ich Aspose.PDF FOSS für Go in einem kommerziellen Produkt verwenden?
Ja. Die MIT-Lizenz erlaubt uneingeschränkte kommerzielle Nutzung, Modifikation, Verteilung und private Nutzung. Sie müssen den Copyright-Hinweis und den MIT-Lizenztext in allen Kopien oder wesentlichen Teilen der Software beifügen.
Gibt es eine Enterprise-Version?
Aspose.PDF FOSS ist die Open-Source-Edition unter MIT-Lizenz. Ein separates kommerzielles Aspose.PDF-Produkt ist verfügbar als die Aspose.PDF — Enterprise Product Family mit Enterprise-Support, erweiterter Formatunterstützung und Cloud-Integration.
Installation und Anforderungen
Wie installiere ich Aspose.PDF FOSS für Go?
Fügen Sie das Modul zu Ihrem Go-Projekt hinzu:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goImportieren Sie es mit einem Alias in Ihren Quelldateien:
import pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"Welche Go-Version ist erforderlich?
Go1.24 oder höher ist erforderlich. Überprüfen Sie Ihre Version mit go version.
Gibt es native oder Systembibliotheksabhängigkeiten?
Nr. Aspose.PDF FOSS für Go ist eine reine Go-Implementierung ohne C-, C++- oder CGo-Abhängigkeiten. Es benötigt keine Systembibliotheken, PDF-Betrachter oder externe Werkzeuge.
API Usage
Wie öffne ich ein vorhandenes PDF?
Verwenden Sie pdf.Open für Standard-PDFs und pdf.OpenWithPassword für passwortgeschützte Dateien:
doc, err := pdf.Open("document.pdf")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount())Wie splitte ich ein PDF in einzelne Seiten?
Document.Split gibt ein []*Document zurück, eines pro Seite:
doc, _ := pdf.Open("report.pdf")
pages, _ := doc.Split()
for i, p := range pages {
p.Save(fmt.Sprintf("page_%03d.pdf", i+1))
}Wie füge ich mehrere PDFs zusammen?
Document.Append fügt ein Quelldokument in-Place zusammen:
base, _ := pdf.Open("part1.pdf")
part2, _ := pdf.Open("part2.pdf")
base.Append(part2)
base.Save("combined.pdf")Wie fülle ich ein AcroForm-Feld?
Verwende Document.Form().Field(name) und prüfe den konkreten Typ:
doc, _ := pdf.Open("form.pdf")
text := doc.Form().Field("customer_name").(*pdf.TextBoxField)
text.SetValue("Jane Doe")
check := doc.Form().Field("agree").(*pdf.CheckboxField)
check.SetChecked(true)
doc.Save("form_filled.pdf")Unterstützte Feldtypen: TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ButtonField.
Wie füge ich Lesezeichen hinzu?
Erstelle ein OutlineItemCollection und setze ein Destination:
doc, _ := pdf.Open("manual.pdf")
page, _ := doc.Page(1)
bm := pdf.NewOutlineItemCollection(doc)
bm.SetTitle("Chapter 1")
bm.SetDestination(pdf.NewDestinationXYZ(page, 0, 800, 1.0))
doc.Outlines().Add(bm)
doc.Save("manual_with_bookmarks.pdf")Sicherheit und Verschlüsselung
Wie schütze ich ein PDF mit einem Passwort?
Verwende Document.SetEncryption mit einer EncryptionOptions-Struktur, um Passwortschutz und Berechtigungs-Flags anzuwenden. Gib ein Benutzerpasswort zum Öffnen der Datei und ein Eigentümerpasswort für Änderungsrechte an:
doc, _ := pdf.Open("doc.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "userpass",
OwnerPassword: "ownerpass",
Permissions: &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("doc_protected.pdf")Welche Verschlüsselungsalgorithmen werden unterstützt?
Drei Algorithmen sind über EncryptionOptions.Algorithm verfügbar:
| Algorithm | Constant | Standard |
|---|---|---|
| AES-128 | EncryptionAlgAES128 (default) | ISO 32000-1 |
| AES-256 | EncryptionAlgAES256 | ISO 32000-2 (PDF 2.0 Ausgabe) |
| RC4-128 | EncryptionAlgRC4_128 | Legacy |
Wie öffne ich eine passwortgeschützte Datei?
Verwenden Sie pdf.OpenWithPassword, wenn die Datei Authentifizierung erfordert. Übergeben Sie das Benutzerpasswort als zweites Argument; sie gibt ein normales *Document zurück, sobald die Entschlüsselung erfolgreich ist:
doc, err := pdf.OpenWithPassword("protected.pdf", "userpass")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount())Wie entferne ich die Verschlüsselung aus einem PDF?
Rufen Sie Document.RemoveEncryption auf, nachdem Sie die Datei mit dem richtigen Passwort geöffnet haben. Speichern Sie das Ergebnis, um eine unverschlüsselte Kopie zu schreiben:
doc, _ := pdf.OpenWithPassword("protected.pdf", "userpass")
doc.RemoveEncryption()
doc.Save("decrypted.pdf")Rendering und Text
Wie rendere ich eine PDF-Seite zu einem Bild?
Verwenden Sie einen der Gerätetypen: BmpDevice, PngDevice, JpegDevice, TiffDevice oder GifDevice. Konstruieren Sie das Gerät mit einem Resolution-Wert und rufen Sie die entsprechende Render*-Methode mit einem io.Writer und RenderOptions auf:
doc, _ := pdf.Open("report.pdf")
page, _ := doc.Page(1)
f, _ := os.Create("page1.png")
defer f.Close()
page.RenderPNG(f, pdf.RenderOptions{DPI: 150})Wie suche ich nach Text in einem PDF?
Rufen Sie Document.SearchText mit einem Abfrage-String und SearchOptions auf. Das Ergebnis ist ein Slice von TextMatch-Werten — jeder enthält den gefundenen Text, seinen Seitenindex und seine Bounding box.
doc, _ := pdf.Open("doc.pdf")
matches, _ := doc.SearchText("total", pdf.SearchOptions{CaseInsensitive: true})
for _, m := range matches {
fmt.Printf("page %d: %q\n", m.PageNumber, m.Text)
}Wie kann ich ein Formular flachlegen?
Rufen Sie Document.Flatten nach dem Ausfüllen oder Überprüfen eines Formulars auf. Die Methode bettet alle Feldwerte in die Seitengrafik ein und entfernt die interaktiven Formularfelder:
doc, _ := pdf.Open("filled.pdf")
doc.Flatten()
doc.Save("flat.pdf")Bekannte Einschränkungen
Sind alle PDF-Funktionen unterstützt?
Die Bibliothek deckt die gängigsten Dokumentenverwaltungs-Operationen ab: öffnen, erstellen, speichern, teilen, zusammenführen, Seitenauszug, Verschlüsselung, AcroForms, Tabellen, Lesezeichen, Anmerkungen, Rendering zu Bild, Textsuche und Formular-Flachlegung. Fortgeschrittene Funktionen wie digitale Signaturen, 3D-Inhalte und PDF/A-Konvertierung sind möglicherweise in der aktuellen Version nicht vollständig implementiert. Prüfen Sie die README des Repositorys für den aktuellen Funktionsstatus.
Was passiert, wenn ich eine Feldtyp-Assertion verwende, die nicht übereinstimmt?
Eine Typ-Assertion auf Field, die nicht mit dem tatsächlichen Feldtyp übereinstimmt, löst einen panic aus. Verwenden Sie pdf.FieldType(f), um den Typ vor der Assertion zu inspizieren, oder verwenden Sie einen Type Switch:
doc, _ := pdf.Open("form.pdf")
for _, f := range doc.Form().Fields() {
switch v := f.(type) {
case *pdf.TextBoxField:
fmt.Println("text:", v.Value())
case *pdf.CheckboxField:
fmt.Println("checked:", v.Checked())
}
}