Úvod

Aspose.PDF FOSS pro Go nyní exportuje PDF dokumenty do HTML, zpřístupňuje volitelné vrstvy obsahu ve stromu stránek a poskytuje rozhraní pro tvorbu označených PDF (přístupných) dokumentů. Tyto doplňky rozšiřují typy Document, Page a Form o schopnosti správy dokumentů, které přesahují základní pracovní postupy otevřít/uložit: převod PDF na samostatnou stránku HTML, přepínání viditelnosti vrstveného obsahu, označování logické struktury pro soulad s PDF/UA, a výměnu dat polí AcroForm jako JSON.

Knihovna je Go modul, github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, vydán pod licencí MIT bez nativních závislostí na C nebo C++.

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

Tento příspěvek provádí krok za krokem novými módy exportu HTML, zpracováním volitelného obsahu (vrstvy), tvorbou označeného obsahu a exportem/importem formulářů JSON – vše zakotveno v aktuální vrstvě API.


Klíčové vlastnosti

Export PDF do HTML

Document.SaveHTML a Document.WriteHTML převádějí načtený PDF na HTML, řízené HTMLSaveOptions.Mode (HTMLModeText pro viditelnou, vybratelnou textovou vrstvu nad rastrovým pozadím bez glifu; HTMLModeNative pro vektorovou vrstvu inline-SVG; HTMLModeFlow pro plynule přizpůsobitelný HTML). Interaktivní AcroForm pole lze převést na skutečné HTML ovládací prvky formuláře pomocí 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})

Volitelné obsahové vrstvy

Document.AddLayer vytvoří novou volitelnou obsahovou skupinu (OCG) a vrátí *Layer; Document.Layers vypíše všechny vrstvy, které jsou v dokumentu již přítomny. Stránka označí obsah jako patřící do vrstvy pomocí Page.BeginLayer / Page.EndLayer. Layer.SetVisible(false) ve výchozím nastavení skryje obsah vrstvy.

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

Tagovaný PDF a přístupnost

Document.TaggedContent vrací *TaggedContent fasádu, která vlastní logický strukturální strom dokumentu. TaggedContent.SetTitle / SetLanguage nastaví metadata na úrovni katalogu, která PDF/UA vyžaduje, a Page.TagContent uzavře volání kreslení v označeném obsahu a zároveň přidá uzel *StructElement.

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

Exportování dat formuláře jako JSON

Form.ExportJSON serializuje typ a hodnotu každého AcroForm pole do JSON; Form.ImportJSON aplikuje JSON payload zpět na formulář a vrátí počet polí, která aktualizoval. JSONExportOptions.Indent hezky formátuje výstup.

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)

Rychlý start

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

Podporované formáty

FormátPříponaČístZapsat
PDFpdfAno-
HTMLhtml-Ano
JSONjson-Ano

Open Source a licencování

Aspose.PDF FOSS pro Go je vydáno pod licencí MIT: žádná omezení používání, žádné poplatky za běh a žádné požadavky na registraci pro komerční ani osobní použití. Zdrojový kód je hostován na github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.


Začínáme

Související zdroje