はじめに

Aspose.PDF FOSS for Go は、PDF ドキュメントを扱うための純粋な Go ライブラリです。新規 PDF をゼロから作成したり、既存ファイルを開いたり編集したり、ドキュメントをページ単位の出力に分割したり、複数の PDF をマージしたり、パスワードベースの暗号化を適用したりするための API を提供します — すべてネイティブの C または C++ 依存なしで。

このライブラリは github.com/aspose-pdf-foss/aspose-pdf-foss-for-go にある Go モジュールとして利用可能で、MIT ライセンスでリリースされています。Go 1.24 以上が必要です。

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

この記事では、コア機能として、ドキュメント操作、セキュリティ、AcroForm の入力、テーブルレイアウト、ブックマーク、アノテーションについて説明します。


主な機能

ドキュメントの分割と結合

The Document type は、PDF をページ単位のドキュメントに分割するための Split() と、外部ドキュメントをその場でマージするための Append() を提供します。PageRange は、選択的な抽出やエクスポートのためにページのサブセットで作業できるようにします。Metadata は、著者、タイトル、作成日などの document-info フィールドの読み書きを公開します。

doc, _ := pdf.Open("report.pdf")

// Split into per-page PDFs
pages, _ := doc.Split()
for i, p := range pages {
	p.Save(fmt.Sprintf("page%03d.pdf", i+1))
}

// Merge a second PDF into doc
doc2, _ := pdf.Open("appendix.pdf")
doc.Append(doc2)
doc.Save("combined.pdf")

パスワード暗号化と権限

EncryptionOptions は、ユーザーパスワード、オーナーパスワード、および許可された操作を、SetEncryption への単一呼び出しで設定します。サポートされているアルゴリズムは、AES-128(デフォルト)、AES-256(ISO 32000-2、PDF 2.0 出力を生成)、およびレガシー互換性のための RC4-128 です。Permissions は、印刷、コピー、アクセシビリティなどの個別操作を独立して許可または拒否できるようにします。OpenWithPassword は暗号化されたファイルを開き、RemoveEncryption はプレーンテキストコピーを保存する前にパスワードを除去します。

doc, _ := pdf.Open("contract.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
	UserPassword:  "userpass",
	OwnerPassword: "ownerpass",
	Permissions:   &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("contract_protected.pdf")

AcroForm フィールド処理

Form は、ドキュメント内のすべての AcroForm フィールドへのアクセスを提供します。Field は基本インターフェースであり、型アサーションにより TextBoxFieldCheckboxFieldRadioButtonFieldComboBoxFieldListBoxFieldButtonField へアクセスできます。フィールド名でフィールド値を設定すると、保存時にビューアが /NeedAppearances=true を通じて外観を自動的に再生成します。

doc, _ := pdf.Open("application.pdf")
text := doc.Form().Field("full_name").(*pdf.TextBoxField)
text.SetValue("Jane Doe")

check := doc.Form().Field("agree_terms").(*pdf.CheckboxField)
check.SetChecked(true)

combo := doc.Form().Field("country").(*pdf.ComboBoxField)
combo.SetSelected(0)

doc.Save("application_filled.pdf")

テーブルレイアウト

TableRow、および Cell は、PDF ページ上に構造化されたグリッドレイアウトを構築します。BorderInfo はセルごとまたはテーブル全体のボーダースタイルを設定します。MarginInfo はセルのパディングを設定します。TextStyle は、HAlignVAlign を介してフォント、サイズ、色、配置を制御します。Image はテキストと並んでセル内に配置できます。

doc, _ := pdf.Open("invoice_template.pdf")
tbl := pdf.NewTable()
tbl.SetColumnWidths([]float64{120, 80, 80})

row := tbl.AddRow()
row.AddCell("Item")
row.AddCell("Qty")
row.AddCell("Price")

page, _ := doc.Page(1)
page.AddTable(tbl, pdf.Rectangle{LLX: 72, LLY: 100, URX: 540, URY: 700})
doc.Save("invoice.pdf")

ブックマークとナビゲーション

OutlineItemCollectionは単一のブックマークエントリを表します。SetTitleSetBoldSetColor、およびSetDestinationを使用して構成します。DestinationXYZは正確なページ座標を指定します;DestinationFitはビューアでページ全体を表示します。NamedDestinationsは名前でアクセスできる再利用可能なジャンプターゲットを登録します。

doc, _ := pdf.Open("manual.pdf")
page, _ := doc.Page(1)

chapter := pdf.NewOutlineItemCollection(doc)
chapter.SetTitle("Chapter 1: Getting Started")
chapter.SetBold(true)
chapter.SetDestination(pdf.NewDestinationXYZ(page, 0, 800, 1.0))
doc.Outlines().Add(chapter)

section := pdf.NewOutlineItemCollection(doc)
section.SetTitle("Installation")
section.SetDestination(pdf.NewDestinationFit(page))
chapter.Add(section)

doc.Save("manual_with_bookmarks.pdf")

注釈とスタンプ

AnnotationCollectionはページ上のすべての注釈を保持します。TextAnnotationは付箋コメントを追加します。StampAnnotationは事前定義されたStampNameのいずれかの値を使用して承認または情報スタンプを配置します。HighlightAnnotationはテキスト領域をマークします。RedactAnnotationは機密内容を永久に削除します。LinkAnnotationはクリック可能な領域にURIまたはページ先行アクションを添付します。

doc, _ := pdf.Open("draft.pdf")
page, _ := doc.Page(1)

stamp := pdf.NewStampAnnotation(page, pdf.Rectangle{LLX: 100, LLY: 700, URX: 250, URY: 750}, pdf.StampNameApproved)
page.Annotations().Add(stamp)

doc.Save("draft_approved.pdf")

クイックスタート

モジュールをインストール:

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

最小限のワークフロー — PDF を開き、パスワードで暗号化し、保存します:

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

	doc.SetEncryption(pdf.EncryptionOptions{
		UserPassword:  "secret",
		OwnerPassword: "ownerSecret",
		Permissions:   &pdf.Permissions{AllowPrint: true},
	})

	if err := doc.Save("output_encrypted.pdf"); err != nil {
		panic(err)
	}
	fmt.Println("Saved output_encrypted.pdf")
}

オープンソースとライセンス

Aspose.PDF FOSS for Go は MIT ライセンスでリリースされています。使用制限はなく、ランタイム料金も登録要件もありません。ソースコードは github.com/aspose-pdf-foss/aspose-pdf-foss-for-go で入手可能です。

MIT ライセンスの条件の下で商用利用が許可されています。プロジェクトでエンタープライズレベルのサポート、拡張フォーマット対応、またはクラウド統合が必要な場合、Aspose.PDF — Enterprise Product Family は別途の商用提供です。


はじめに

関連リソース