Introducere
Aspose.PDF FOSS pentru Go exportă acum documente PDF în HTML, expune straturi de conținut opțional în arborele de pagini și oferă o fațadă pentru crearea de documente PDF etichetate (accesibile). Aceste adăugiri extind tipurile Document, Page și Form cu capabilități de gestionare a documentelor care depășesc fluxurile de lucru de bază deschide/salvează: transformarea unui PDF într-o pagină HTML autonomă, comutarea vizibilității conținutului stratificat, marcarea structurii logice pentru conformitatea PDF/UA, și schimbul de date de câmp AcroForm ca JSON.
Biblioteca este un modul Go, github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, lansat sub licența MIT fără dependențe native de C sau C++.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goAcest articol parcurge noile moduri de export HTML, gestionarea conținutului opțional (strat), crearea de conținut etichetat și exportul/importul de formulare JSON — fiecare bazat pe suprafața actuală API.
Funcționalități cheie
Exportarea PDF în HTML
Document.SaveHTML și Document.WriteHTML convertesc un PDF încărcat în HTML, controlat de HTMLSaveOptions.Mode (HTMLModeText pentru un strat de text vizibil și selectabil peste un fundal raster fără glife; HTMLModeNative pentru un strat vectorial inline-SVG; HTMLModeFlow pentru reflowable HTML). Câmpurile interactive AcroForm pot fi convertite în controale reale de formular HTML cu 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})
Straturi de Conținut Opțional
Document.AddLayer creează un nou Grup de Conținut Opțional (OCG) și returnează un *Layer; Document.Layers enumeră fiecare strat deja prezent în document. O pagină marchează conținutul ca aparținând unui strat cu Page.BeginLayer / Page.EndLayer. Layer.SetVisible(false) ascunde conținutul stratului în mod implicit.
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")
PDF Etichetat și Accesibilitate
Document.TaggedContent returnează fațada *TaggedContent care deține arborele de structură logică al documentului. TaggedContent.SetTitle / SetLanguage setează metadatele la nivel de catalog necesare de PDF/UA, iar Page.TagContent încadrează un apel de desen în conținut marcat în timp ce adaugă un nod *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
Exportarea Datelor de Formular ca JSON
Form.ExportJSON serializează tipul și valoarea fiecărui câmp AcroForm în JSON; Form.ImportJSON aplică o sarcină utilă JSON înapoi pe un formular și returnează numărul de câmpuri actualizate. JSONExportOptions.Indent afișează frumos rezultatul.
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)
Începe rapid
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")
}
Formate acceptate
| Format | Extensie | Citește | Scrie |
|---|---|---|---|
| Da | - | ||
| HTML | html | - | Da |
| JSON | json | - | Da |
Open Source & Licențiere
Aspose.PDF FOSS for Go este lansat sub licența MIT: fără restricții de utilizare, fără taxe de rulare și fără cerințe de înregistrare pentru utilizare comercială sau personală. Codul sursă este găzduit la github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.