Pendahuluan
Aspose.PDF FOSS untuk Go sekarang mengekspor dokumen PDF ke HTML, memperlihatkan lapisan konten opsional pada pohon halaman, dan menyediakan antarmuka untuk membuat dokumen Tagged PDF (aksesibel). Penambahan ini memperluas tipe Document, Page, dan Form dengan kemampuan manajemen dokumen yang melampaui alur kerja buka/simpan dasar: mengubah PDF menjadi halaman HTML yang berdiri sendiri, mengubah visibilitas konten berlapis, menandai struktur logis untuk kepatuhan PDF/UA, dan menukar data bidang AcroForm sebagai JSON.
Pustaka ini adalah modul Go, github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, dirilis di bawah lisensi MIT tanpa dependensi C atau C++ asli.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goPosting ini membahas mode ekspor HTML baru, penanganan konten opsional (lapisan), pembuatan konten ber-tag, dan ekspor/impor formulir JSON — semuanya berlandaskan pada permukaan API saat ini.
Fitur Utama
Mengekspor PDF ke HTML
Document.SaveHTML dan Document.WriteHTML mengonversi PDF yang dimuat ke HTML, dikendalikan oleh HTMLSaveOptions.Mode (HTMLModeText untuk lapisan teks yang terlihat dan dapat dipilih di atas latar raster tanpa glif; HTMLModeNative untuk lapisan vektor SVG sebaris; HTMLModeFlow untuk HTML yang dapat diubah susunannya). Bidang interaktif AcroForm dapat dikonversi menjadi kontrol formulir HTML yang sebenarnya dengan 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})
Lapisan Konten Opsional
Document.AddLayer membuat Grup Konten Opsional (OCG) baru dan mengembalikan *Layer; Document.Layers mencantumkan setiap lapisan yang sudah ada dalam dokumen. Sebuah halaman menandai konten sebagai milik sebuah lapisan dengan Page.BeginLayer / Page.EndLayer. Layer.SetVisible(false) menyembunyikan konten lapisan secara default.
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 Berlabel dan Aksesibilitas
Document.TaggedContent mengembalikan fasad *TaggedContent yang memiliki pohon struktur logis dokumen. TaggedContent.SetTitle / SetLanguage menetapkan metadata tingkat katalog yang diperlukan oleh PDF/UA, dan Page.TagContent mengapit panggilan gambar dalam konten yang ditandai sambil menambahkan node *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
Mengekspor Data Formulir sebagai JSON
Form.ExportJSON menserialisasikan setiap tipe dan nilai bidang AcroForm ke JSON; Form.ImportJSON menerapkan muatan JSON kembali ke sebuah formulir dan mengembalikan jumlah bidang yang diperbarui. JSONExportOptions.Indent mencetak output dengan format yang rapi.
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)
Memulai Cepat
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")
}
Format yang Didukung
| Format | Ekstensi | Baca | Tulis |
|---|---|---|---|
| Ya | - | ||
| HTML | html | - | Ya |
| JSON | json | - | Ya |
Sumber Terbuka & Lisensi
Aspose.PDF FOSS untuk Go dirilis di bawah lisensi MIT: tidak ada pembatasan penggunaan, tidak ada biaya runtime, dan tidak ada persyaratan pendaftaran untuk penggunaan komersial atau pribadi. Kode sumber dihosting di github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.