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-goBu 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-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")
}
Desteklenen Formatlar
| Biçim | Uzantı | Oku | Yaz |
|---|---|---|---|
| Evet | - | ||
| HTML | html | - | Evet |
| JSON | json | - | 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.