مقدمه

Aspose.PDF FOSS برای Go اکنون اسناد PDF را به HTML صادر می‌کند، لایه‌های محتوای اختیاری را در درخت صفحه نمایش می‌دهد و یک واسط برای نوشتن اسناد PDF برچسب‌گذاری‌شده (قابل دسترس) فراهم می‌کند. این افزوده‌ها انواع Document، Page و Form را با قابلیت‌های مدیریت سند گسترش می‌دهند که فراتر از جریان‌های پایه باز/ذخیره هستند: تبدیل PDF به صفحهٔ خودکفا HTML، تغییر وضعیت نمایش محتوای لایه‌ای، علامت‌گذاری ساختار منطقی برای انطباق PDF/UA، و تبادل داده‌های فیلد AcroForm به صورت JSON.

این کتابخانه یک ماژول Go است، github.com/aspose-pdf-foss/aspose-pdf-foss-for-go، تحت مجوز MIT منتشر شده و هیچ وابستگی بومی C یا C++ ندارد.

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

این پست به بررسی حالت‌های جدید صادرات HTML، مدیریت محتوای اختیاری (لایه)، نوشتن محتوای برچسب‌گذاری‌شده، و صادرات/واردات فرم JSON می‌پردازد — که هر کدام بر پایهٔ سطح فعلی API استوار هستند.


ویژگی‌های کلیدی

صادرات PDF به HTML

Document.SaveHTML و Document.WriteHTML یک PDF بارگذاری‌شده را به HTML تبدیل می‌کنند، که توسط HTMLSaveOptions.Mode کنترل می‌شود (HTMLModeText برای لایه متنی قابل مشاهده و انتخابی بر روی پس‌زمینه رستری بدون گلیف؛ HTMLModeNative برای لایه برداری SVG درون‌خطی؛ HTMLModeFlow برای HTML قابل بازجریان). فیلدهای تعاملی AcroForm می‌توانند با InteractiveForms: true به کنترل‌های فرم واقعی HTML تبدیل شوند.

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

لایه‌های محتوا اختیاری

Document.AddLayer یک گروه محتوا اختیاری (OCG) جدید ایجاد می‌کند و یک *Layer برمی‌گرداند؛ Document.Layers تمام لایه‌های موجود در سند را فهرست می‌کند. یک صفحه محتوا را به عنوان تعلق به یک لایه با Page.BeginLayer / Page.EndLayer علامت‌گذاری می‌کند. Layer.SetVisible(false) به‌طور پیش‌فرض محتوای لایه را مخفی می‌کند.

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 برچسب‌دار و دسترسی‌پذیری

Document.TaggedContent واسط *TaggedContent را که درخت ساختار منطقی سند را در اختیار دارد برمی‌گرداند. TaggedContent.SetTitle / SetLanguage متادیتا در سطح کاتالوگ را که PDF/UA نیاز دارد تنظیم می‌کنند، و Page.TagContent یک فراخوانی رسم را در محتوای علامت‌گذاری‌شده در براکت می‌گیرد در حالی که یک گره *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

صادرات داده‌های فرم به‌صورت JSON

Form.ExportJSON نوع و مقدار هر فیلد AcroForm را به JSON سریال‌سازی می‌کند؛ Form.ImportJSON یک بار JSON را دوباره بر روی فرم اعمال می‌کند و تعداد فیلدهایی که به‌روزرسانی شده‌اند را برمی‌گرداند. JSONExportOptions.Indent خروجی را به‌صورت زیبا چاپ می‌کند.

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)

شروع سریع

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

فرمت‌های پشتیبانی‌شده

قالبپسوندخواندننوشتن
PDFpdfبله-
HTMLhtml-بله
JSONjson-بله

منبع باز و مجوزها

Aspose.PDF FOSS برای Go تحت مجوز MIT منتشر شده است: هیچ محدودیت استفاده‌ای وجود ندارد، هزینهٔ زمان اجرا نیست و نیازی به ثبت‌نام برای استفاده تجاری یا شخصی نیست. کد منبع در github.com/aspose-pdf-foss/aspose-pdf-foss-for-go میزبانی می‌شود.


شروع کار

منابع مرتبط