はじめに

Aspose.PDF FOSS for Go は、PDF ドキュメントを HTML にエクスポートし、ページツリー上でオプションコンテンツレイヤーを公開し、タグ付き PDF(アクセシブル)ドキュメントの作成用ファサードを提供します。これらの追加機能により、DocumentPageForm タイプが、基本的な開く/保存のワークフローを超えるドキュメント管理機能を拡張します。具体的には、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.SaveHTMLDocument.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-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 にホストされています。


スタートガイド

関連リソース