Einleitung
Aspose.PDF FOSS für Go exportiert jetzt PDF-Dokumente nach HTML, stellt optionale Inhaltsebenen im Seitenbaum bereit und bietet eine Fassade zum Erstellen von Tagged PDF (barrierefreien) Dokumenten. Diese Ergänzungen erweitern die Typen Document, Page und Form um Dokumentenverwaltungs-Funktionen, die über grundlegende Öffnen-/Speichern-Abläufe hinausgehen: ein PDF in eine eigenständige HTML-Seite umwandeln, die Sichtbarkeit von geschichteten Inhalten umschalten, die logische Struktur für PDF/UA-Konformität kennzeichnen und AcroForm-Felddaten als JSON austauschen.
Die Bibliothek ist ein Go-Modul, github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, veröffentlicht unter der MIT-Lizenz ohne native C- oder C++-Abhängigkeiten.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goDieser Beitrag führt durch die neuen HTML-Exportmodi, die Handhabung optionaler Inhalte (Ebenen), die Erstellung von Tagged-Inhalten und den Formular-JSON-Export/Import — jeweils basierend auf der aktuellen API-Oberfläche.
Hauptmerkmale
Exportieren von PDF nach HTML
Document.SaveHTML und Document.WriteHTML konvertieren ein geladenes PDF zu HTML, gesteuert durch HTMLSaveOptions.Mode (HTMLModeText für eine sichtbare, auswählbare Textebene über einem glyphlosen Rasterhintergrund; HTMLModeNative für eine Inline-SVG-Vektorebene; HTMLModeFlow für wiederflussfähiges HTML). Interaktive AcroForm-Felder können mit InteractiveForms: true in echte HTML-Formularsteuerelemente umgewandelt werden.
doc, _ := pdf.Open("input.pdf")
// Faithful mode (default): full page raster + transparent selectable text layer.
doc.SaveHTML("out.html")
// Visible-text mode: real styled HTML text over a glyph-less background raster.
doc.SaveHTML("out.html", pdf.HTMLSaveOptions{Mode: pdf.HTMLModeText})
// Native mode: page graphics as one inline SVG layer.
doc.SaveHTML("out.html", pdf.HTMLSaveOptions{Mode: pdf.HTMLModeNative})
// Flow mode: reflowable HTML, paragraphs and headings in reading order.
doc.SaveHTML("article.html", pdf.HTMLSaveOptions{Mode: pdf.HTMLModeFlow})
// Interactive forms become fillable HTML controls.
doc.SaveHTML("form.html", pdf.HTMLSaveOptions{Mode: pdf.HTMLModeText, InteractiveForms: true})
Optionale Inhaltsebenen
Document.AddLayer erstellt eine neue Optional Content Group (OCG) und gibt ein *Layer zurück; Document.Layers listet jede bereits im Dokument vorhandene Ebene auf. Eine Seite kennzeichnet Inhalt als zu einer Ebene gehörend mit Page.BeginLayer / Page.EndLayer. Layer.SetVisible(false) blendet den Inhalt der Ebene standardmäßig aus.
doc := pdf.NewDocumentFromFormat(pdf.PageFormatA4)
layer := doc.AddLayer("Watermark")
page, _ := doc.Page(1)
page.BeginLayer(layer)
page.AddText("DRAFT", pdf.TextStyle{Font: pdf.FontHelveticaBold, Size: 48},
pdf.Rectangle{LLX: 150, LLY: 400, URX: 450, URY: 460})
page.EndLayer()
layer.SetVisible(false) // hide the watermark by default
doc.Save("layered.pdf")
Getaggtes PDF und Barrierefreiheit
Document.TaggedContent liefert die *TaggedContent-Fassade, die den logischen Strukturbaum des Dokuments besitzt. TaggedContent.SetTitle / SetLanguage setzen die katalogbezogenen Metadaten, die PDF/UA erfordert, und Page.TagContent umschließt einen Zeichenaufruf in markiertem Inhalt, während ein *StructElement-Knoten hinzugefügt wird.
doc := pdf.NewDocumentFromFormat(pdf.PageFormatA4)
tc := doc.TaggedContent()
tc.SetTitle("Quarterly Report")
tc.SetLanguage("en-US")
page, _ := doc.Page(1)
page.TagContent(tc.Root(), pdf.StructH1, func() error {
return page.AddText("Quarterly Report", pdf.TextStyle{Font: pdf.FontHelveticaBold, Size: 24},
pdf.Rectangle{LLX: 50, LLY: 760, URX: 545, URY: 800})
})
fig, _ := page.TagContent(tc.Root(), pdf.StructFigure, func() error {
return page.AddImage("chart.png", pdf.Rectangle{LLX: 50, LLY: 540, URX: 300, URY: 680})
})
fig.SetAlt("Bar chart of Q3 sales by region") // required for figures
doc.Save("accessible.pdf") // doc.ValidatePDFUA() is now Conformant
Exportieren von Formulardaten als JSON
Form.ExportJSON serialisiert den Typ und Wert jedes AcroForm-Feldes nach JSON; Form.ImportJSON wendet eine JSON-Nutzlast wieder auf ein Formular an und gibt die Anzahl der aktualisierten Felder zurück. JSONExportOptions.Indent formatiert die Ausgabe leserlich.
doc, _ := pdf.Open("filled.pdf")
data, _ := doc.Form().ExportJSON(pdf.JSONExportOptions{Indent: true})
// Fill a template from a JSON payload; discard the applied-field count.
template, _ := pdf.Open("template.pdf")
_, _ = template.Form().ImportJSON(data)
Schnellstart
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-gopackage 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)
}
err = doc.SaveHTML("out.html", pdf.HTMLSaveOptions{Mode: pdf.HTMLModeText})
if err != nil {
panic(err)
}
fmt.Println("HTML export complete")
}
Unterstützte Formate
| Format | Erweiterung | Lesen | Schreiben |
|---|---|---|---|
| Ja | - | ||
| HTML | html | - | Ja |
| JSON | json | - | Ja |
Open Source & Lizenzierung
Aspose.PDF FOSS für Go wird unter der MIT-Lizenz veröffentlicht: keine Nutzungsbeschränkungen, keine Laufzeitgebühren und keine Registrierungsanforderungen für kommerzielle oder private Nutzung. Der Quellcode ist gehostet bei github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.