Introduktion

Aspose.PDF FOSS för Go exporterar nu PDF-dokument till HTML, exponerar valfria innehållslager i sidträdet och tillhandahåller ett gränssnitt för att skapa Taggade PDF (tillgängliga) dokument. Dessa tillägg utökar Document, Page och Form typerna med dokumenthanteringsfunktioner som går bortom grundläggande öppna/spara-flöden: omvandla en PDF till en självständig HTML sida, växla synligheten för lagerinnehåll, märka upp den logiska strukturen för PDF/UA efterlevnad, och utbyta AcroForm fältdata som JSON.

Biblioteket är en Go-modul, github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, släppt under MIT-licensen utan några inhemska C- eller C++-beroenden.

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

Detta inlägg går igenom de nya HTML exportlägena, hantering av valfritt innehåll (lager), författande av taggat innehåll och formulär JSON export/import — alla baserade på den nuvarande API ytan.


Viktiga funktioner

Exportera PDF till HTML

Document.SaveHTML och Document.WriteHTML konverterar en inläst PDF till HTML, styrt av HTMLSaveOptions.Mode (HTMLModeText för ett synligt, markerbart textlager över en glyflös rasterbakgrund; HTMLModeNative för ett inline-SVG vektorlager; HTMLModeFlow för omflödesbar HTML). Interaktiva AcroForm fält kan konverteras till riktiga HTML formulärkontroller med 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})

Valfria innehållslager

Document.AddLayer skapar en ny Optional Content Group (OCG) och returnerar en *Layer; Document.Layers listar varje lager som redan finns i dokumentet. En sida markerar innehåll som tillhör ett lager med Page.BeginLayer / Page.EndLayer. Layer.SetVisible(false) döljer lagrets innehåll som standard.

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

Taggad PDF och tillgänglighet

Document.TaggedContent returnerar *TaggedContent-fasaden som äger dokumentets logiska strukturs träd. TaggedContent.SetTitle / SetLanguage ställer in den katalognivåmetadata som PDF/UA kräver, och Page.TagContent omsluter ett ritningsanrop i markerat innehåll samtidigt som den lägger till en *StructElement-nod.

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

Exportera formulärdata som JSON

Form.ExportJSON serialiserar varje AcroForm fälts typ och värde till JSON; Form.ImportJSON applicerar en JSON-payload tillbaka på ett formulär och returnerar antalet fält som uppdaterades. JSONExportOptions.Indent pretty-printar utdata.

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)

Snabbstart

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

Stödda format

FormatFiländelseLäsSkriv
PDFpdfJa-
HTMLhtml-Ja
JSONjson-Ja

Öppen källkod & licensiering

Aspose.PDF FOSS för Go släpps under MIT-licensen: inga användningsrestriktioner, inga körningsavgifter och inga registreringskrav för kommersiell eller personlig användning. Källkoden är hostad på github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.


Komma igång

Relaterade resurser