Introducción
Aspose.PDF FOSS para Go ahora exporta documentos PDF a HTML, expone capas de contenido opcional en el árbol de páginas y proporciona una fachada para crear documentos PDF etiquetado (accesible). Estas incorporaciones amplían los tipos Document, Page y Form con capacidades de gestión de documentos que van más allá de los flujos básicos de abrir/guardar: convertir un PDF en una página HTML autónoma, alternar la visibilidad del contenido en capas, marcar la estructura lógica para la conformidad PDF/UA, y intercambiar datos de campos AcroForm como JSON.
La biblioteca es un módulo Go, github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, lanzado bajo la licencia MIT sin dependencias nativas de C o C++.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goEsta publicación recorre los nuevos modos de exportación HTML, la gestión de contenido opcional (capa), la creación de contenido etiquetado y la exportación/importación de formularios JSON, cada uno basado en la superficie actual de API.
Características clave
Exportando PDF a HTML
Document.SaveHTML y Document.WriteHTML convierten un PDF cargado a HTML, controlado por HTMLSaveOptions.Mode (HTMLModeText para una capa de texto visible y seleccionable sobre un fondo raster sin glifos; HTMLModeNative para una capa vectorial SVG en línea; HTMLModeFlow para HTML refluible). Los campos interactivos AcroForm pueden convertirse en controles de formulario reales 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})
Capas de contenido opcional
Document.AddLayer crea un nuevo Grupo de contenido opcional (OCG) y devuelve un *Layer; Document.Layers enumera todas las capas que ya existen en el documento. Una página marca el contenido como perteneciente a una capa con Page.BeginLayer / Page.EndLayer. Layer.SetVisible(false) oculta el contenido de la capa por defecto.
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 etiquetado y accesibilidad
Document.TaggedContent devuelve la fachada *TaggedContent que posee el árbol de estructura lógica del documento. TaggedContent.SetTitle / SetLanguage establecen los metadatos a nivel de catálogo que requiere PDF/UA, y Page.TagContent encierra una llamada de dibujo en contenido marcado mientras añade 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
Exportar datos de formulario como JSON
Form.ExportJSON serializa el tipo y valor de cada campo AcroForm a JSON; Form.ImportJSON aplica una carga útil JSON de nuevo en un formulario y devuelve el número de campos que actualizó. JSONExportOptions.Indent formatea la salida de forma legible.
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)
Inicio rápido
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")
}
Formatos compatibles
| Formato | Extensión | Leer | Escribir |
|---|---|---|---|
| Sí | - | ||
| HTML | html | - | Sí |
| JSON | json | - | Sí |
Código abierto y licencias
Aspose.PDF FOSS para Go se publica bajo la licencia MIT: sin restricciones de uso, sin tarifas de tiempo de ejecución y sin requisitos de registro para uso comercial o personal. El código fuente está alojado en github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.
Primeros pasos
- Guía de instalación
- Guía del desarrollador
- Artículos de la base de conocimientos
- API Reference
- GitHub Repositorio