Introduction

Aspose.PDF FOSS pour Go exporte désormais les documents PDF vers HTML, expose les calques de contenu optionnel dans l’arborescence des pages, et fournit une façade pour la création de documents PDF balisés (accessibles). Ces ajouts étendent les types Document, Page et Form avec des capacités de gestion de documents qui vont au-delà des simples flux d’ouverture/enregistrement : transformer un PDF en une page HTML autonome, basculer la visibilité du contenu calqué, annoter la structure logique pour la conformité PDF/UA, et échanger les données de champ AcroForm sous forme de JSON.

La bibliothèque est un module Go, github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, publié sous licence MIT sans dépendances natives en C ou C++.

go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go

Cet article parcourt les nouveaux modes d’export HTML, la gestion du contenu optionnel (calque), la création de contenu balisé et l’export/import des formulaires JSON — le tout ancré dans la surface actuelle API.


Fonctionnalités clés

Exportation de PDF vers HTML

Document.SaveHTML et Document.WriteHTML convertissent un PDF chargé en HTML, contrôlé par HTMLSaveOptions.Mode (HTMLModeText pour un calque de texte visible et sélectionnable sur un arrière-plan raster sans glyphe; HTMLModeNative pour un calque vectoriel SVG intégré; HTMLModeFlow pour un HTML réformatable). Les champs interactifs AcroForm peuvent être convertis en véritables contrôles de formulaire HTML avec 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})

Couches de contenu optionnel

Document.AddLayer crée un nouveau groupe de contenu optionnel (OCG) et renvoie un *Layer; Document.Layers répertorie chaque couche déjà présente dans le document. Une page marque le contenu comme appartenant à une couche avec Page.BeginLayer / Page.EndLayer. Layer.SetVisible(false) masque le contenu de la couche par défaut.

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 balisé et accessibilité

Document.TaggedContent renvoie la façade *TaggedContent qui possède l’arbre de structure logique du document. TaggedContent.SetTitle / SetLanguage définissent les métadonnées au niveau du catalogue requises par PDF/UA, et Page.TagContent encadre un appel de dessin dans du contenu balisé tout en ajoutant un nœud *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

Exportation des données de formulaire en tant que JSON

Form.ExportJSON sérialise le type et la valeur de chaque champ AcroForm en JSON; Form.ImportJSON applique une charge utile JSON à un formulaire et renvoie le nombre de champs qu’il a mis à jour. JSONExportOptions.Indent formate joliment la sortie.

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)

Démarrage rapide

go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go
package 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")
}

Formats pris en charge

FormatExtensionLireÉcrire
PDFpdfOui-
HTMLhtml-Oui
JSONjson-Oui

Open source & licences

Aspose.PDF FOSS pour Go est publié sous licence MIT : aucune restriction d’utilisation, aucun frais d’exécution et aucune exigence d’enregistrement pour une utilisation commerciale ou personnelle. Le code source est hébergé sur github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.


Premiers pas

Ressources associées