Inleiding

Aspose.PDF FOSS voor Go exporteert nu PDF-documenten naar HTML, exposeert optionele inhoudslagen in de paginaboom en biedt een facade voor het maken van Tagged PDF (toegankelijke) documenten. Deze toevoegingen breiden de Document, Page en Form types uit met documentbeheerfuncties die verder gaan dan basis open/save-werkstromen: een PDF omzetten in een zelfstandige HTML pagina, de zichtbaarheid van gelaagde inhoud schakelen, de logische structuur markeren voor PDF/UA conformiteit, en AcroForm veldgegevens uitwisselen als JSON.

De bibliotheek is een Go-module, github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, uitgebracht onder de MIT-licentie zonder native C- of C++-afhankelijkheden.

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

Deze post loopt de nieuwe HTML exportmodi, optionele inhoud (laag) handling, tagged-content authoring, en formulier JSON export/import — elk gebaseerd op de huidige API laag.


Belangrijkste functies

PDF exporteren naar HTML

Document.SaveHTML en Document.WriteHTML converteren een geladen PDF naar HTML, geregeld door HTMLSaveOptions.Mode (HTMLModeText voor een zichtbaar, selecteerbaar tekstlaag boven een glyph-loze rasterachtergrond; HTMLModeNative voor een inline-SVG vectorlaag; HTMLModeFlow voor doorstromende HTML). Interactieve AcroForm velden kunnen worden omgezet in echte HTML formulierbesturingselementen met InteractiveForms: true.

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

Optionele Inhoudslagen

Document.AddLayer maakt een nieuwe Optional Content Group (OCG) aan en retourneert een *Layer; Document.Layers geeft een lijst weer van elke laag die al in het document aanwezig is. Een pagina markeert inhoud als behorend tot een laag met Page.BeginLayer / Page.EndLayer. Layer.SetVisible(false) verbergt de inhoud van de laag standaard.

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

Getagde PDF en Toegankelijkheid

Document.TaggedContent retourneert de *TaggedContent façade die de logische structuurboom van het document bezit. TaggedContent.SetTitle / SetLanguage stellen de catalogus-niveau metadata in die PDF/UA vereist, en Page.TagContent omringt een tekenaanroep in gemarkeerde inhoud terwijl een *StructElement knoop wordt toegevoegd.

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

Formuliervelden exporteren als JSON

Form.ExportJSON serialiseert het type en de waarde van elk AcroForm veld naar JSON; Form.ImportJSON past een JSON payload toe op een formulier en retourneert het aantal velden dat het heeft bijgewerkt. JSONExportOptions.Indent pretty-prints de output.

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)

Snelstart

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

Ondersteunde formaten

FormaatExtensieLezenSchrijven
PDFpdfJa-
HTMLhtml-Ja
JSONjson-Ja

Open source & licensering

Aspose.PDF FOSS voor Go wordt uitgebracht onder de MIT-licentie: geen gebruiksbeperkingen, geen runtime-kosten en geen registratievereisten voor commercieel of persoonlijk gebruik. De broncode wordt gehost op github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.


Aan de slag

Gerelateerde bronnen