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-go

Ten 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-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")
}

Obsługiwane formaty

FormatRozszerzenieOdczytZapis
PDFpdfTak-
HTMLhtml-Tak
JSONjson-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.


Rozpoczęcie

Powiązane zasoby