よくある質問
ライセンスとオープンソース
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 を介して利用できます:
| Algorithm | Constant | Standard |
|---|---|---|
| AES-128 | EncryptionAlgAES128 (デフォルト) | ISO 32000-1 |
| AES-256 | EncryptionAlgAES256 | ISO 32000-2(PDF 2.0 出力) |
| RC4-128 | EncryptionAlgRC4_128 | Legacy |
パスワードで保護されたファイルを開くにはどうすればよいですか?
ファイルが認証を必要とする場合は 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())
}
}