Giới thiệu
Aspose.PDF FOSS cho Go hiện đã xuất tài liệu PDF sang HTML, cung cấp các lớp nội dung tùy chọn trên cây trang, và cung cấp một giao diện để tạo tài liệu PDF có thẻ (có khả năng truy cập). Những bổ sung này mở rộng các kiểu Document, Page và Form với khả năng quản lý tài liệu vượt qua quy trình mở/lưu cơ bản: chuyển PDF thành một trang HTML tự chứa, bật/tắt hiển thị nội dung lớp, đánh dấu cấu trúc logic để tuân thủ PDF/UA, và trao đổi dữ liệu trường AcroForm dưới dạng JSON.
Thư viện là một mô-đun Go, github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, được phát hành dưới giấy phép MIT và không có phụ thuộc C hoặc C++ gốc.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goBài viết này hướng dẫn các chế độ xuất HTML mới, xử lý nội dung tùy chọn (lớp), tạo nội dung có thẻ, và xuất/nhập biểu mẫu JSON — tất cả dựa trên giao diện API hiện tại.
Các tính năng chính
Xuất PDF sang HTML
Document.SaveHTML và Document.WriteHTML chuyển đổi một PDF đã tải sang HTML, được kiểm soát bởi HTMLSaveOptions.Mode (HTMLModeText để có lớp văn bản có thể nhìn thấy, có thể chọn trên nền raster không có glyph; HTMLModeNative để có lớp vector SVG nội tuyến; HTMLModeFlow để có HTML có thể tái định dạng). Các trường AcroForm tương tác có thể được chuyển thành các điều khiển biểu mẫu HTML thực sự bằng 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})
Các lớp nội dung tùy chọn
Document.AddLayer tạo một Nhóm Nội dung Tùy chọn (OCG) mới và trả về một *Layer; Document.Layers liệt kê mọi lớp đã có trong tài liệu. Một trang đánh dấu nội dung là thuộc về một lớp bằng Page.BeginLayer / Page.EndLayer. Layer.SetVisible(false) ẩn nội dung của lớp theo mặc định.
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 có thẻ và khả năng truy cập
Document.TaggedContent trả về giao diện *TaggedContent sở hữu cây cấu trúc logic của tài liệu. TaggedContent.SetTitle / SetLanguage thiết lập siêu dữ liệu mức danh mục mà PDF/UA yêu cầu, và Page.TagContent đặt trong ngoặc một lời gọi vẽ trong nội dung được đánh dấu đồng thời thêm một nút *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
Xuất dữ liệu biểu mẫu dưới dạng JSON
Form.ExportJSON tuần tự hoá loại và giá trị của mỗi trường AcroForm thành JSON; Form.ImportJSON áp dụng một tải JSON trở lại vào biểu mẫu và trả về số trường đã được cập nhật. JSONExportOptions.Indent in ra kết quả với định dạng đẹp.
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)
Bắt đầu nhanh
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")
}
Định dạng được hỗ trợ
| Định dạng | Phần mở rộng | Đọc | Ghi |
|---|---|---|---|
| Có | - | ||
| HTML | html | - | Có |
| JSON | json | - | Có |
Mã nguồn mở & Giấy phép
Aspose.PDF FOSS cho Go được phát hành dưới giấy phép MIT: không có hạn chế sử dụng, không có phí chạy, và không yêu cầu đăng ký cho việc sử dụng thương mại hay cá nhân. Mã nguồn được lưu trữ tại github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.