Ú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-goTento 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-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")
}
Podporované formáty
| Formát | Přípona | Číst | Zapsat |
|---|---|---|---|
| Ano | - | ||
| HTML | html | - | Ano |
| JSON | json | - | 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.