1. 製品
  2.   Aspose.PDF
  3.   Aspose.PDF FOSS for C++

C++ 用 Aspose.PDF FOSS

ゼロランタイム依存性でPDFドキュメントの作成、編集、レンダリング、保護を行うオープンソースC++ライブラリ。

Aspose.PDF FOSS — オープンソース C++ PDF ライブラリ

Aspose.PDF FOSS for C++ は、PDF ドキュメントの操作(PDF のオープンと保存、テキスト抽出、ページの画像形式へのラスタライズ、テキスト、画像、表、ベクタグラフィックス、注釈、AcroForm フィールド、ブックマークからのドキュメント構築)を行うためのオープンソースかつモダンな C++20 ライブラリです。ライブラリは C++ 標準ライブラリ以外には何もリンクせず、TIFF、JPEG、PNG コーデックやページラスタライザを含むすべてのプリミティブを、商用 PDF スタックへの依存なしに一から実装しています。

コアの API は Document クラスとその Pages() コレクションを中心に構築されています。テキストは Aspose::Pdf::Text::TextAbsorber で抽出され、ページは PngDevice、JpegDevice、BmpDevice、TiffDevice などのデバイスクラスを介してラスタ画像にレンダリングされ、Document.Encrypt() を使用して RC4-40、RC4-128、AES-128、または AES-256 アルゴリズム(CryptoAlgorithm 列挙型で選択)で文書を保護できます。インタラクティブなフォームフィールドは Form クラスで管理され、注釈(テキストノート、ハイライト、シェイプ、スタンプ)は Annotation クラス階層を通じて追加および変更されます。

Aspose.PDF FOSS for C++ は MIT ライセンスの下でリリースされており、ランタイム料金や使用制限はありません。CMake を使用してスタティックライブラリとしてビルドでき(ビルドのサブディレクトリとして追加するか、単体でインストールします)、他のランタイム依存性なしに C++20 コンパイラが必要です。エンタープライズ機能とサポートについては、Aspose.PDF for C++ — Enterprise Product をご覧ください。

ドキュメントの読み込みとページ管理

  • 既存の PDF ファイルを開き、Document で変更を保存する
  • Document.Pages()(PageCollection)を使用してページにアクセスし、反復処理する
  • PageCollection.Add()/Insert()/Delete() でページを追加、挿入、削除する
  • DocumentInfo(Document.Info())を介してドキュメントのメタデータを読み取り、設定する
  • Document.Optimize()/OptimizeResources() でドキュメントサイズを最適化する

典型的な使用例

  • レポートや請求書の PDF 生成パイプラインを構築する
  • 既存の PDF 文書を結合、分割、再構成する
  • プログラムで文書メタデータを検査および更新する
  • アーカイブまたは配布前に PDF ファイルサイズを縮小する

テキスト抽出

  • Aspose::Pdf::Text::TextAbsorber を使用して文書全体からプレーンテキストを抽出する
  • TextAbsorber.Visit() で単一ページまたは文書全体を訪問する
  • TextAbsorber.Text() で抽出されたテキストを取得する
  • TextFragmentAbsorber.TextFragments() で個々のテキストフラグメントを検索する

典型的な使用例

  • 検索のためにPDFコンテンツをインデックス化する
  • 請求書や構造化文書からデータを抽出する
  • テキストマイニングやコンテンツ分析パイプラインを構築する
  • 自動化テストスイートで文書コンテンツを検証する

ラスタ画像へのレンダリング

  • PngDevice を使用してページを PNG にレンダリングする
  • JpegDevice、BmpDevice、TiffDevice を使用してページを JPEG、BMP、または TIFF にレンダリングする
  • Resolution クラスで出力解像度を制御する
  • {Device}.Process() で単一ページを処理する

典型的な使用例

  • ドキュメントビューア用のページサムネイルを生成する
  • ベクタPDFから印刷用ラスタ出力を作成する
  • PDFから画像への変換サービスを構築する
  • 生成されたPDFのビジュアル回帰ベースラインを作成する

暗号化とセキュリティ

  • Document.Encrypt() を使用してユーザーと所有者パスワードでドキュメントを暗号化します
  • CryptoAlgorithm 列挙体を介して RC4-40、RC4-128、AES-128、または AES-256 を選択します
  • Permissions 型で付与された権限を制御します
  • Document.Decrypt() でパスワードで保護されたドキュメントを復号化します

典型的な使用例

  • 配布前に機密 PDF レポートを保護する
  • 共有ドキュメントに対して印刷/コピー/編集の制限を適用する
  • 生成された請求書や明細書にパスワード保護を追加する
  • ドキュメント パイプラインの一部としてドキュメントを一括暗号化する

注釈とインタラクティブフォーム

  • Annotation と AnnotationCollection を使用してアノテーションを追加、変更、フラット化する
  • Form クラスを使用して AcroForm フィールドを管理する
  • Form.Add()/Form.Delete() でフィールドを追加および削除する
  • Form.Flatten() でインタラクティブなフォームを静的コンテンツにフラット化する

典型的な使用例

  • 共有PDFにレビューコメントとハイライトを追加する
  • データ収集用の入力可能なPDFフォームを作成する
  • アーカイブ前に送信されたフォームをフラット化する
  • プログラムでフォームフィールドに事前入力し、ロックする

PDF を開き、テキストを抽出し、ページをレンダリングする

ライブラリを CMake のサブディレクトリとして追加し、ドキュメントを開いてページ数をカウントし、TextAbsorber でテキストを抽出し、ページ 1 を 150 DPI の PNG にレンダリングします。

add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/page_collection.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <aspose/pdf/png_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    std::cout << "Pages: " << doc.Pages().Count() << "\n";

    Aspose::Pdf::Text::TextAbsorber absorber;
    absorber.Visit(doc);
    std::cout << absorber.Text() << "\n";

    Aspose::Pdf::Devices::PngDevice png(Aspose::Pdf::Devices::Resolution(150));
    std::ofstream out("page1.png", std::ios::binary);
    png.Process(doc.Pages()[1], out);
}

AES-256でドキュメントを暗号化する

ドキュメントを開き、ユーザー パスワードとオーナー パスワードで AES-256 暗号化を使用して保護します。

#include <aspose/pdf/document.hpp>
int main() {
    Aspose::Pdf::Document doc("input.pdf");
    doc.Encrypt("user-password", "owner-password",
                Aspose::Pdf::Permissions(),
                Aspose::Pdf::CryptoAlgorithm::AESx256);
    doc.Save("encrypted.pdf");
}

ドキュメント メタデータの読み取りと更新

既存の /Info エントリを読み取り、DocumentInfo を介してドキュメントのタイトルを更新します。

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/document_info.hpp>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    auto& info = doc.Info();
    std::cout << "Title: " << info.Title() << "\n";
    std::cout << "Author: " << info.Author() << "\n";

    doc.SetTitle("Updated Report Title");
    doc.Save("output.pdf");
}

よくある質問

Aspose.PDF FOSS for C++ のライセンスモデルは何ですか?

MIT ライセンスで、商用・非商用製品のいずれでも無料で使用でき、アクティベーションキーや API 呼び出し制限はありません。

必要なコンパイラと CMake のバージョンは何ですか?

C++20 コンパイラ(clang 16+、gcc 13+、または MSVC 2022 17.5+)と CMake 3.22 以降が必要です。Python 3 はビルド時にのみ必要です。

このライブラリには実行時の依存関係がありますか?

いいえ。C++ 標準ライブラリ以外には何もリンクしません — ランタイム時にサードパーティの PDF、画像、または圧縮の依存関係は必要ありません。

どのフォーマットを読み取り、エクスポートできますか?

ネイティブPDFドキュメントを読み取り保存し、レンダリングされたページをBmp、Jpeg、Tiff、およびプレーンテキストにエクスポートします。SVGコンテンツをインポートできます。

PDFドキュメントを暗号化するにはどうすればよいですか?

Document.Encrypt() を、ユーザーパスワード、オーナーパスワード、および CryptoAlgorithm(RC4x40、RC4x128、AESx128、または AESx256)と共に呼び出します。

現在のリリースで既知の制限はありますか?

はい — XmpValue タイプチェックヘルパー (IsDateTime、IsField、その他) は常に false を返すスタブです; 代わりに IsString/IsInteger/IsDouble/IsArray を使用してください。

  

サポートと学習リソース

 日本語