Giriş

Aspose.PDF FOSS for Go artık PDF belgelerini HTML’a dışa aktarıyor, sayfa ağacında isteğe bağlı içerik katmanlarını ortaya çıkarıyor ve Etiketli PDF (erişilebilir) belgeleri oluşturmak için bir arayüz sağlıyor. Bu eklemeler, Document, Page ve Form türlerini, temel aç/kaydet iş akışlarının ötesine geçen belge yönetimi yetenekleriyle genişletiyor: bir PDF’yi bağımsız bir HTML sayfasına dönüştürmek, katmanlı içeriğin görünürlüğünü değiştirmek, PDF/UA uyumluluğu için mantıksal yapıyı işaretlemek ve AcroForm alan verilerini JSON olarak değiştirmek.

Kütüphane bir Go modülü, github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, MIT lisansı altında yayınlanmıştır ve yerel C veya C++ bağımlılıkları içermez.

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

Bu gönderi, yeni HTML dışa aktarım modlarını, isteğe bağlı içerik (katman) yönetimini, etiketli içerik oluşturmayı ve form JSON dışa aktarım/ithalatını — her biri mevcut API yüzeyine dayanarak — adım adım inceler.


Temel Özellikler

PDF’yi HTML’a Dışa Aktarma

Document.SaveHTML ve Document.WriteHTML, yüklü bir PDF’yi HTML’a dönüştürür, HTMLSaveOptions.Mode tarafından kontrol edilir (HTMLModeText, glif içermeyen raster arka plan üzerinde görünür, seçilebilir bir metin katmanı için; HTMLModeNative, satır içi SVG vektör katmanı için; HTMLModeFlow, yeniden akışkan HTML için). Etkileşimli AcroForm alanları, InteractiveForms: true ile gerçek HTML form denetimlerine dönüştürülebilir.

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

İsteğe Bağlı İçerik Katmanları

Document.AddLayer, yeni bir İsteğe Bağlı İçerik Grubu (OCG) oluşturur ve bir *Layer döndürür; Document.Layers, belgede zaten bulunan her katmanı listeler. Bir sayfa, içeriği Page.BeginLayer / Page.EndLayer ile bir katmana ait olarak işaretler. Layer.SetVisible(false), katmanın içeriğini varsayılan olarak gizler.

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

Etiketli PDF ve Erişilebilirlik

Document.TaggedContent, belgenin mantıksal yapı ağacına sahip *TaggedContent dış yüzünü döndürür. TaggedContent.SetTitle / SetLanguage, katalog seviyesindeki PDF/UA tarafından gerektiren meta verileri ayarlar ve Page.TagContent, işaretli içerikte bir çizim çağrısını parantez içine alırken bir *StructElement düğümü ekler.

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

Form Verilerini JSON Olarak Dışa Aktarma

Form.ExportJSON, her AcroForm alanının tür ve değerini JSON’a serileştirir; Form.ImportJSON, bir form üzerine JSON yükünü uygular ve güncellediği alan sayısını döndürür. JSONExportOptions.Indent, çıktıyı güzel bir şekilde biçimlendirir.

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)

Hızlı Başlangıç

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

Desteklenen Formatlar

BiçimUzantıOkuYaz
PDFpdfEvet-
HTMLhtml-Evet
JSONjson-Evet

Açık Kaynak & Lisanslama

Aspose.PDF FOSS for Go MIT lisansı altında yayınlanmıştır: kullanım kısıtlaması yok, çalışma zamanı ücreti yok ve ticari veya kişisel kullanım için kayıt gerekliliği yoktur. Kaynak kodu github.com/aspose-pdf-foss/aspose-pdf-foss-for-go adresinde barındırılmaktadır.


Başlarken

İlgili Kaynaklar