よくある質問

よくある質問

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

Aspose.PDF FOSS for Go のライセンスは何ですか?

Aspose.PDF FOSS for Go は以下のライセンスでリリースされています MIT License。完全なライセンス本文はリポジトリの github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.に含まれています。登録やアクティベーションファイル、ランタイムキーは不要です。

商用製品で Aspose.PDF FOSS for Go を使用できますか?

はい。MIT ライセンスは商用利用、改変、配布、私的利用を無制限に許可します。ソフトウェアのすべてのコピーまたは実質的な部分には、著作権表示と MIT ライセンス本文を含める必要があります。

エンタープライズ版はありますか?

Aspose.PDF FOSS はオープンソースで MIT ライセンスのエディションです。別の商用 Aspose.PDF 製品が以下として利用可能です Aspose.PDF — Enterprise Product Family エンタープライズサポート、拡張フォーマット対応、クラウド統合が含まれます。


インストールと要件

Go 用の Aspose.PDF FOSS をどのようにインストールしますか?

モジュールを Go プロジェクトに追加します:

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

ソースファイルでエイリアスを付けてインポートします:

import pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"

必要な Go バージョンは何ですか?

Go 1.24 以降が必要です。go version でバージョンを確認してください。

ネイティブまたはシステムライブラリの依存関係はありますか?

No. Aspose.PDF FOSS for Go は、C、C++、CGo の依存関係がない純粋な Go 実装です。システムライブラリ、PDF ビューア、外部ツールは必要ありません。


API Usage

既存の PDF を開くにはどうすればいいですか?

標準の PDF には pdf.Open を、パスワード保護されたファイルには pdf.OpenWithPassword を使用してください:

doc, err := pdf.Open("document.pdf")
if err != nil {
    panic(err)
}
fmt.Println(doc.PageCount())

PDF を個々のページに分割するにはどうすればいいですか?

Document.Split は、ページごとに 1 つずつの []*Document を返します:

doc, _ := pdf.Open("report.pdf")
pages, _ := doc.Split()
for i, p := range pages {
    p.Save(fmt.Sprintf("page_%03d.pdf", i+1))
}

複数の PDF をマージするにはどうすればいいですか?

Document.Append は、ソースドキュメントをインプレースでマージします:

base, _ := pdf.Open("part1.pdf")
part2, _ := pdf.Open("part2.pdf")
base.Append(part2)
base.Save("combined.pdf")

どのようにAcroFormフィールドを埋めますか?

Document.Form().Field(name) を使用し、具体的な型をアサートします:

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

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

doc.Save("form_filled.pdf")

サポートされているフィールドタイプ: TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ButtonField。

ブックマークを追加するにはどうすればよいですか?

OutlineItemCollection を作成し、Destination を設定します:

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

bm := pdf.NewOutlineItemCollection(doc)
bm.SetTitle("Chapter 1")
bm.SetDestination(pdf.NewDestinationXYZ(page, 0, 800, 1.0))
doc.Outlines().Add(bm)
doc.Save("manual_with_bookmarks.pdf")

セキュリティと暗号化

PDFにパスワード保護を設定するにはどうすればよいですか?

Document.SetEncryption を EncryptionOptions 構造体と共に使用して、パスワード保護と権限フラグを適用します。ファイルを開くためのユーザーパスワードと、変更権限のためのオーナーパスワードを提供してください:

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

サポートされている暗号化アルゴリズムはどれですか?

3つのアルゴリズムは EncryptionOptions.Algorithm を介して利用できます:

AlgorithmConstantStandard
AES-128EncryptionAlgAES128 (デフォルト)ISO 32000-1
AES-256EncryptionAlgAES256ISO 32000-2(PDF 2.0 出力)
RC4-128EncryptionAlgRC4_128Legacy

パスワードで保護されたファイルを開くにはどうすればよいですか?

ファイルが認証を必要とする場合は pdf.OpenWithPassword を使用します。ユーザーパスワードを第2引数として渡してください。復号に成功すると通常の *Document が返されます:

doc, err := pdf.OpenWithPassword("protected.pdf", "userpass")
if err != nil {
    panic(err)
}
fmt.Println(doc.PageCount())

PDF から暗号化を削除するにはどうすればよいですか?

正しいパスワードでファイルを開いた後、Document.RemoveEncryption を呼び出します。結果を保存して暗号化されていないコピーを書き出します:

doc, _ := pdf.OpenWithPassword("protected.pdf", "userpass")
doc.RemoveEncryption()
doc.Save("decrypted.pdf")

レンダリングとテキスト

PDF ページを画像にレンダリングするにはどうすればよいですか?

次のデバイスタイプのいずれかを使用してください: BmpDevice, PngDevice, JpegDevice, TiffDevice, または GifDevice。Resolution の値でデバイスを構築し、対応する Render* メソッドを io.Writer と RenderOptions で呼び出します:

doc, _ := pdf.Open("report.pdf")
page, _ := doc.Page(1)
f, _ := os.Create("page1.png")
defer f.Close()
page.RenderPNG(f, pdf.RenderOptions{DPI: 150})

PDF でテキストを検索するにはどうすればよいですか?

Document.SearchText をクエリ文字列と SearchOptions で呼び出します。結果は TextMatch 値のスライスで、各要素は一致したテキスト、そのページインデックス、そしてバウンディングボックスを保持します。

doc, _ := pdf.Open("doc.pdf")
matches, _ := doc.SearchText("total", pdf.SearchOptions{CaseInsensitive: true})
for _, m := range matches {
    fmt.Printf("page %d: %q\n", m.PageNumber, m.Text)
}

フォームをフラット化するにはどうすればよいですか?

Document.Flatten をフォームの入力またはレビュー後に呼び出します。このメソッドはすべてのフィールド値をページのグラフィックに焼き付け、インタラクティブなフォームフィールドを削除します:

doc, _ := pdf.Open("filled.pdf")
doc.Flatten()
doc.Save("flat.pdf")

既知の制限事項

すべての PDF 機能がサポートされていますか?

このライブラリは、最も一般的なドキュメント管理操作(開く、作成、保存、分割、結合、ページ抽出、暗号化、AcroForms、テーブル、ブックマーク、注釈、画像へのレンダリング、テキスト検索、フォームのフラット化)を網羅しています。デジタル署名、3D コンテンツ、PDF/A 変換などの高度な機能は、現在のリリースでは完全に実装されていない可能性があります。現在の機能ステータスについては、リポジトリの README を確認してください。

フィールドの型アサーションが一致しない場合、どうなりますか?

実際のフィールド型と一致しない Field に対する型アサーションはパニックを引き起こします。アサーションする前に型を調べるには pdf.FieldType(f) を使用するか、型スイッチを使用してください:

doc, _ := pdf.Open("form.pdf")
for _, f := range doc.Form().Fields() {
    switch v := f.(type) {
    case *pdf.TextBoxField:
        fmt.Println("text:", v.Value())
    case *pdf.CheckboxField:
        fmt.Println("checked:", v.Checked())
    }
}

参照

 日本語