Wprowadzenie
Aspose.PDF FOSS dla Go teraz eksportuje dokumenty PDF do HTML, udostępnia opcjonalne warstwy treści w drzewie stron oraz zapewnia fasadę do tworzenia dokumentów Tagged PDF (dostępnych). Te dodatki rozszerzają typy Document, Page i Form o możliwości zarządzania dokumentami, które wykraczają poza podstawowe operacje otwierania/zapisywania: przekształcanie PDF w samodzielną stronę HTML, przełączanie widoczności warstwowej treści, oznaczanie struktury logicznej pod kątem zgodności PDF/UA, oraz wymianę danych pól AcroForm jako JSON.
Biblioteka jest modułem Go, github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, wydanym na licencji MIT bez natywnych zależności C lub C++.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goTen wpis przeprowadza przez nowe tryby eksportu HTML, obsługę opcjonalnej treści (warstwy), tworzenie treści tagowanej oraz eksport/import formularzy JSON — każdy oparty na bieżącej warstwie API.
Kluczowe funkcje
Eksportowanie PDF do HTML
Document.SaveHTML i Document.WriteHTML konwertują załadowany PDF do HTML, kontrolowane przez HTMLSaveOptions.Mode (HTMLModeText dla widocznej, wybieralnej warstwy tekstowej nad rastrowym tłem bez glifów; HTMLModeNative dla wektorowej warstwy inline-SVG; HTMLModeFlow dla płynnie zmieniającego się HTML). Interaktywne pola AcroForm mogą być przekształcone w prawdziwe kontrolki formularza HTML przy użyciu 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})
Warstwy zawartości opcjonalnej
Document.AddLayer tworzy nową grupę zawartości opcjonalnej (OCG) i zwraca *Layer; Document.Layers wymienia każdą warstwę już istniejącą w dokumencie. Strona oznacza zawartość jako należącą do warstwy za pomocą Page.BeginLayer / Page.EndLayer. Layer.SetVisible(false) domyślnie ukrywa zawartość warstwy.
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 oznaczony i dostępność
Document.TaggedContent zwraca fasadę *TaggedContent, która zarządza drzewem logicznej struktury dokumentu. TaggedContent.SetTitle / SetLanguage ustawiają metadane na poziomie katalogu wymagane przez PDF/UA, a Page.TagContent otacza wywołanie rysowania w oznaczonej zawartości, jednocześnie dodając węzeł *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
Eksportowanie danych formularza jako JSON
Form.ExportJSON serializuje typ i wartość każdego pola AcroForm do JSON; Form.ImportJSON nakłada ładunek JSON z powrotem na formularz i zwraca liczbę pól, które zostały zaktualizowane. JSONExportOptions.Indent ładnie formatuje wyjście.
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)
Szybki start
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")
}
Obsługiwane formaty
| Format | Rozszerzenie | Odczyt | Zapis |
|---|---|---|---|
| Tak | - | ||
| HTML | html | - | Tak |
| JSON | json | - | Tak |
Open Source i licencjonowanie
Aspose.PDF FOSS dla Go jest udostępniony na licencji MIT: brak ograniczeń w użytkowaniu, brak opłat za uruchomienie oraz brak wymogu rejestracji zarówno dla zastosowań komercyjnych, jak i prywatnych. Kod źródłowy znajduje się pod adresem github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.