مقدمة
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 لطبقة متجهة inline-SVG؛ HTMLModeFlow لإعادة تدفق HTML). يمكن تحويل حقول AcroForm التفاعلية إلى عناصر تحكم نموذجية حقيقية من نوع HTML باستخدام 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})
طبقات المحتوى الاختيارية
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-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")
}
الصيغ المدعومة
| تنسيق | امتداد | قراءة | كتابة |
|---|---|---|---|
| نعم | - | ||
| HTML | html | - | نعم |
| JSON | json | - | نعم |
المصدر المفتوح والترخيص
Aspose.PDF FOSS for Go يتم إصداره تحت رخصة MIT: لا توجد قيود على الاستخدام، ولا رسوم تشغيل، ولا متطلبات تسجيل للاستخدام التجاري أو الشخصي. الشيفرة المصدرية مستضافة على github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.