はじめに
Aspose.PDF FOSS for 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-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 にホストされています。