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 をご覧ください。
Document で変更を保存するDocument.Pages()(PageCollection)を使用してページにアクセスし、反復処理するPageCollection.Add()/Insert()/Delete() でページを追加、挿入、削除するDocumentInfo(Document.Info())を介してドキュメントのメタデータを読み取り、設定するDocument.Optimize()/OptimizeResources() でドキュメントサイズを最適化するAspose::Pdf::Text::TextAbsorber を使用して文書全体からプレーンテキストを抽出するTextAbsorber.Visit() で単一ページまたは文書全体を訪問するTextAbsorber.Text() で抽出されたテキストを取得するTextFragmentAbsorber.TextFragments() で個々のテキストフラグメントを検索するPngDevice を使用してページを PNG にレンダリングするJpegDevice、BmpDevice、TiffDevice を使用してページを JPEG、BMP、または TIFF にレンダリングするResolution クラスで出力解像度を制御する{Device}.Process() で単一ページを処理するDocument.Encrypt() を使用してユーザーと所有者パスワードでドキュメントを暗号化しますCryptoAlgorithm 列挙体を介して RC4-40、RC4-128、AES-128、または AES-256 を選択しますPermissions 型で付与された権限を制御しますDocument.Decrypt() でパスワードで保護されたドキュメントを復号化しますAnnotation と AnnotationCollection を使用してアノテーションを追加、変更、フラット化するForm クラスを使用して AcroForm フィールドを管理するForm.Add()/Form.Delete() でフィールドを追加および削除するForm.Flatten() でインタラクティブなフォームを静的コンテンツにフラット化するライブラリを 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 暗号化を使用して保護します。
#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");
}
MIT ライセンスで、商用・非商用製品のいずれでも無料で使用でき、アクティベーションキーや API 呼び出し制限はありません。
C++20 コンパイラ(clang 16+、gcc 13+、または MSVC 2022 17.5+)と CMake 3.22 以降が必要です。Python 3 はビルド時にのみ必要です。
いいえ。C++ 標準ライブラリ以外には何もリンクしません — ランタイム時にサードパーティの PDF、画像、または圧縮の依存関係は必要ありません。
ネイティブPDFドキュメントを読み取り保存し、レンダリングされたページをBmp、Jpeg、Tiff、およびプレーンテキストにエクスポートします。SVGコンテンツをインポートできます。
Document.Encrypt() を、ユーザーパスワード、オーナーパスワード、および CryptoAlgorithm(RC4x40、RC4x128、AESx128、または AESx256)と共に呼び出します。
はい — XmpValue タイプチェックヘルパー (IsDateTime、IsField、その他) は常に false を返すスタブです; 代わりに IsString/IsInteger/IsDouble/IsArray を使用してください。