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-go

Dieser 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-go
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)
	}

	err = doc.SaveHTML("out.html", pdf.HTMLSaveOptions{Mode: pdf.HTMLModeText})
	if err != nil {
		panic(err)
	}
	fmt.Println("HTML export complete")
}

Unterstützte Formate

FormatErweiterungLesenSchreiben
PDFpdfJa-
HTMLhtml-Ja
JSONjson-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.


Erste Schritte

Verwandte Ressourcen