Introduzione
Aspose.PDF FOSS per Go ora esporta documenti PDF in HTML, espone livelli di contenuto opzionali sull’albero delle pagine e fornisce una facciata per la creazione di documenti PDF taggati (accessibili). Queste aggiunte estendono i tipi Document, Page e Form con capacità di gestione dei documenti che vanno oltre i semplici flussi di apertura/salvataggio: trasformare un PDF in una pagina HTML autonoma, attivare/disattivare la visibilità del contenuto a strati, annotare la struttura logica per la conformità PDF/UA, e scambiare i dati dei campi AcroForm come JSON.
La libreria è un modulo Go, github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, rilasciata sotto licenza MIT senza dipendenze native C o C++.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goQuesto post illustra le nuove modalità di esportazione HTML, la gestione del contenuto opzionale (livello), la creazione di contenuti taggati e l’esportazione/importazione dei moduli JSON — ognuna basata sull’attuale superficie API.
Caratteristiche principali
Esportazione PDF in HTML
Document.SaveHTML e Document.WriteHTML convertono un PDF caricato in HTML, controllato da HTMLSaveOptions.Mode (HTMLModeText per uno strato di testo visibile e selezionabile su uno sfondo raster senza glifi; HTMLModeNative per uno strato vettoriale SVG in linea; HTMLModeFlow per HTML riadattabile). I campi interattivi AcroForm possono essere convertiti in veri controlli di modulo HTML con 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})
Livelli di Contenuto Opzionale
Document.AddLayer crea un nuovo Gruppo di Contenuto Opzionale (OCG) e restituisce un *Layer; Document.Layers elenca tutti i livelli già presenti nel documento. Una pagina segna il contenuto come appartenente a un livello con Page.BeginLayer / Page.EndLayer. Layer.SetVisible(false) nasconde il contenuto del livello per impostazione predefinita.
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 Taggato e Accessibilità
Document.TaggedContent restituisce la facciata *TaggedContent che possiede l’albero di struttura logica del documento. TaggedContent.SetTitle / SetLanguage impostano i metadati a livello di catalogo richiesti da PDF/UA, e Page.TagContent racchiude una chiamata di disegno nel contenuto marcato aggiungendo un nodo *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
Esportazione dei dati del modulo come JSON
Form.ExportJSON serializza il tipo e il valore di ogni campo AcroForm in JSON; Form.ImportJSON applica un payload JSON al modulo e restituisce il numero di campi aggiornati. JSONExportOptions.Indent stampa l’output in modo leggibile.
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)
Avvio Rapido
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")
}
Formati supportati
| Formato | Estensione | Leggi | Scrivi |
|---|---|---|---|
| Sì | - | ||
| HTML | html | - | Sì |
| JSON | json | - | Sì |
Open Source e licenze
Aspose.PDF FOSS per Go è rilasciato sotto licenza MIT: nessuna restrizione d’uso, nessuna tariffa di runtime e nessun requisito di registrazione per uso commerciale o personale. Il codice sorgente è ospitato su github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.