Introdução
Aspose.PDF FOSS para Go agora exporta documentos PDF para HTML, expõe camadas de conteúdo opcional na árvore de páginas e fornece uma fachada para a criação de documentos Tagged PDF (acessíveis). Essas adições ampliam os tipos Document, Page e Form com recursos de gerenciamento de documentos que vão além dos fluxos de trabalho básicos de abrir/salvar: transformar um PDF em uma página HTML autônoma, alternar a visibilidade de conteúdo em camadas, marcar a estrutura lógica para conformidade PDF/UA, e trocar dados de campo AcroForm como JSON.
A biblioteca é um módulo Go, github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, lançada sob a licença MIT sem dependências nativas de C ou C++.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goEste post percorre os novos modos de exportação HTML, o tratamento de conteúdo opcional (camada), a autoria de conteúdo marcado e a exportação/importação de formulários JSON — tudo baseado na superfície atual API.
Recursos Principais
Exportando PDF para HTML
Document.SaveHTML e Document.WriteHTML convertem um PDF carregado para HTML, controlado por HTMLSaveOptions.Mode (HTMLModeText para uma camada de texto visível e selecionável sobre um fundo raster sem glifos; HTMLModeNative para uma camada vetorial inline-SVG; HTMLModeFlow para HTML refluível). Campos interativos AcroForm podem ser convertidos em verdadeiros controles de formulário HTML com 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})
Camadas de Conteúdo Opcional
Document.AddLayer cria um novo Grupo de Conteúdo Opcional (OCG) e retorna um *Layer; Document.Layers lista todas as camadas já presentes no documento. Uma página marca o conteúdo como pertencente a uma camada com Page.BeginLayer / Page.EndLayer. Layer.SetVisible(false) oculta o conteúdo da camada por padrão.
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 Marcado e Acessibilidade
Document.TaggedContent retorna a fachada *TaggedContent que possui a árvore de estrutura lógica do documento. TaggedContent.SetTitle / SetLanguage definem os metadados ao nível de catálogo exigidos por PDF/UA, e Page.TagContent envolve uma chamada de desenho em conteúdo marcado enquanto adiciona um nó *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
Exportando Dados de Formulário como JSON
Form.ExportJSON serializa o tipo e o valor de cada campo AcroForm para JSON; Form.ImportJSON aplica uma carga JSON de volta a um formulário e retorna o número de campos que ele atualizou. JSONExportOptions.Indent formata a saída de forma legível.
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)
Início 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 suportados
| Formato | Extensão | Ler | Escrever |
|---|---|---|---|
| Sim | - | ||
| HTML | html | - | Sim |
| JSON | json | - | Sim |
Código aberto e licenciamento
Aspose.PDF FOSS para Go é lançado sob a licença MIT: sem restrições de uso, sem taxas de tempo de execução e sem requisitos de registro para uso comercial ou pessoal. O código-fonte está hospedado em github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.
Começando
- Guia de Instalação
- Guia do Desenvolvedor
- Artigos da Base de Conhecimento
- API Reference
- GitHub Repositório