บทนำ

Aspose.PDF FOSS สำหรับ Go ตอนนี้สามารถส่งออกเอกสาร PDF ไปยัง HTML, เปิดเผยชั้นเนื้อหาแบบเลือกได้บนต้นไม้หน้า, และให้ส่วนต่อประสานสำหรับการเขียนเอกสาร Tagged 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 สำหรับชั้นข้อความที่มองเห็นได้และสามารถเลือกได้เหนือพื้นหลัง raster ที่ไม่มี glyph; 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 สร้าง Optional Content Group (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 facade ที่เป็นเจ้าของต้นไม้โครงสร้างตรรกะของเอกสาร. TaggedContent.SetTitle / SetLanguage set the catalog-level metadata PDF/UA requires, and Page.TagContent brackets a drawing call in marked content while adding a *StructElement node.

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 นำ payload JSON กลับไปใส่บนฟอร์มและคืนค่าจำนวนฟิลด์ที่อัปเดต. JSONExportOptions.Indent pretty-prints ผลลัพธ์.

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 for Go ถูกเผยแพร่ภายใต้ใบอนุญาต MIT: ไม่มีข้อจำกัดการใช้งาน, ไม่มีค่าธรรมเนียมการรัน, และไม่มีความต้องการลงทะเบียนสำหรับการใช้เชิงพาณิชย์หรือส่วนบุคคล. โค้ดต้นฉบับโฮสต์ที่ github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.


เริ่มต้นใช้งาน

แหล่งข้อมูลที่เกี่ยวข้อง