ネイティブ Linux C ABI

HotPDFLinuxABI.lpr は libhotpdf.so.1 というネイティブ x86_64 ELF 共有ライブラリーをビルドします。SONAME は libhotpdf.so.1、公開シンボルは HOTPDF_1.0 に割り当てられます

このライブラリーは実行時に Windows コンポーネント、アクティブなデスクトップ、PDF ビュアー、Python プロセスを使わず、THPDFHeadlessDocument と CPU レンダリングだけで動きます。Python はビルド / 受け入れスクリプトで使うものです

ビルドと受け入れ

sh Tests/Linux/Build-LinuxABI.sh
sh Tests/Linux/Run-LinuxABIAcceptance.sh
FPC_EXE=/usr/local/bin/fpc HPDF_LINUX_OUTPUT=Tests/Linux/bin/linux-abi331 sh Tests/Linux/Run-LinuxABIAcceptance.sh

ネイティブ FPC 3.2.2 以降(FCL と paszlib つき)、C コンパイラー、binutils、Fontconfig、インストール済み TrueType フォントを使ってください。受け入れ用 Python 環境にはさらに、AES プロバイダーつき pypdf、PyMuPDF、Pillow、NumPy が必要です

FPC_EXE、HPDF_LINUX_OUTPUT、PYTHON_EXE がツールの場所を選択します。受け入れ用 Python 環境のデフォルトは /opt/hotpdf-python/bin/python です

FPC は通常、匿名エクスポートブロックを ELF リンカー応答へ書き込みます。2 つ目の名前付きバージョンスクリプトを追加すると匿名ブロックと競合するため、ビルドはリンク前に、リポジトリーに同梱されたシンボルマップでそのブロックに名前を付けます

公開インターフェース

共有レコードレイアウトとステータス定数は Lib/hotpdf_abi.h を include してください。hpdf_abi_io_v1_size と hpdf_abi_operation_v1_size が実際のネイティブレコードサイズを報告します

Linux ライブラリーは、ABI 検出、ケイパビリティー検出、ドキュメント生成 / 破棄、コールバック読み込み / 保存、ページ数取得、hpdf_document_execute_json_v1、2 ドキュメントの hpdf_document_compare_json_v1 エントリーポイントをエクスポートします

Windows の操作セットを仮定せず、hpdf_capabilities_json_to_io で現在の操作を検出してください

操作挙動
infoページ数、フォーム数、署名フィールド数
text.extractJSON 形式の Unicode ページテキストとオプションの UTF-8 出力。省略可能な 0 始まり pages 配列つき
forms.read完全修飾フィールド名、Unicode 値、選択肢の完全な選択状態、タイプ、フラグ、最大長
forms.fillトランザクション型のテキスト・選択・複数選択・チェックボックス・ラジオ更新、プッシュボタンキャプション、一致する埋め込みフォント外観、インクリメンタル PDF 出力
annotations.export / annotations.import上限付き注釈 XFDF 交換。追加トランザクション、正確な Unicode、バイナリストリーム、popup/返信参照、暗号化、認証済み証明書ポリシーつき
forms.export / forms.import選択された 設定済みリッチファミリーごとに 4 つの実際スタイルを持つ 上限付きスカラー / リッチ FDF・XFDF 相互運用。暗号化 PDF トランザクション、再生成外観、署名ポリシー、同期断片化コールバックつき
renderCairo PNG 出力。ページ、dpi、view / print 用途、注釈オプション、デフォルトオプションコンテンツ設定つき
signインクリメンタル PEM / PFX 署名、既存 / 新規作成フィールド、可視外観、証明書化。認証済み AES-256 R5 / R6 入力と ダイジェスト・メタデータ・プロファイル・検証済みエビデンスオプションを含む
signatures.verify実際の CMS 検証、署名済みリビジョン長、オプションの明示 CA トラスト評価、署名付き失効情報検証
html.importネイティブ HTML/CSS ドキュメント作成。Unicode フォント、ページ付け、画像、ハイパーリンク、省略可能な AcroForm コントロールつき
text.draw可視 / 不可視の Unicode ページテキスト。元のページストリームを保持し、認証済み暗号化リビジョンに対応
ocr実際の Tesseract 認識。有界な子プロセス生存期間、単語結果、省略可能な検索可能 PDF レイヤーつき
pages.import選択ページのリソースインポート。独立したソース入力とトランザクション型の宛先更新つき
pdfa.convertラスターまたはテキスト/ベクターの PDF/A-4 変換。省略可能なフォント修復と、選択されたモードの検証要件つき
compare / compare.contract2 ハンドルのページ数・ページテキスト・オブジェクト数・レンダリング画像・構造 / フル比較に加え、準備された JSON / HTML / 注釈付き PDF レビュー出力によるセマンティックコントラクト比較
{"schemaVersion":1,"type":"render","page":0,"dpi":150,"usage":"print","annotations":false,
 "limits":{"memoryBytes":268435456,"outputBytes":268435456,"pixels":100000000}}

ネイティブ署名ワークフローは明示的な PEM / Base64 PFX ID、オプションの新規署名フィールド / Unicode 外観、証明書権限を受け付けます。署名成功はロード済みコンテキストを準備済み署名リビジョンへ置き換え、署名や公開の失敗は元のコンテキストを保存します

ネイティブ署名オプションは、実際の SHA256 / SHA384 / SHA512 選択、Unicode 署名情報、法的証明、明示トラストバイト、検証済み署名付き失効エビデンス、実際の外観プリセット、アプリケーション主張のクレデンシャル / タイムスタンプ転送由来を結び付けます

オプションの オプションコンテンツビュアー状態は、変更なし V1 レコードを通じて、明示的な自動 View / Print / Export 用途適用、ズーム、言語、ユーザーコンテキスト、操作ローカルの手動選択を供給します

render 操作は usage: "view" または usage: "print" を受け付け、デフォルトは view です。選択肢はケイパビリティーの renderUsages 配列で検出してください。V1 コールバック / 操作レコードは不変です

注釈の画面 / 印刷フラグは選択された用途に従い、annotations: false はどちらのモードでも注釈を抑制します。optionalContent を省略すると静的なデフォルト設定が保持され、明示的なオブジェクトを渡すと、文書化された自動推奨と操作ローカルの手動選択が有効になります

Tests/Linux/Run-LinuxABIRenderUsage.sh は平文 / AES R5 / R6 ソースの実際の PNG ピクセル、デフォルトオフコンテンツ、コールバック失敗、予算、キャンセル、同一ハンドル復帰を検証します。フィクスチャー依存とオプションの事前生成フィクスチャーディレクトリーは Tests/Linux/HeadlessRenderUsage.en-us.md を参照してください

コールバックと寿命

フォーム外観オプションは Unicode テキスト、エクスポート値、完全な選択配列、明示的なボタン状態、フォント設定、トランザクション型リソース上限を受け付けます

読み書きコールバックは部分転送を返せます。成功した転送は正の進捗を持ち、要求された数を超えてはいけません

すべてのコールバックは呼び出しスレッド上で同期的に実行されます。ドキュメントパース、レンダリング、暗号チェックポイント内のキャンセルチェックも含みます

コールバック入力はモード 0600 の排他的作成プライベート一時ファイルへコピーされるため、Linux の入力コールバックとそのユーザーデータは、ロード / 実行呼び出しが戻るまで有効であれば十分です

共有ドキュメントハンドルへの操作は内部で直列化されます。アクティブな各呼び出しは独立した参照を持つため、進行中コールバックからのハンドル破棄は後続のルックアップを無効化しますが、カレント呼び出しは安全に完了できます

コールバックから同じハンドル上の別の操作を再帰的に実行しないでください。共有ライブラリーはすべての呼び出しが戻り、全ハンドルが破棄されるまでロードしたままにしてください

予算と公開

JSON 入力は 4 MiB とネスト 64 レベルに制限され、不正 UTF-8、重複メンバー、不正な数値上限、Int64→Int32 パラメーター切り詰めを拒否します

生 UTF-8 と Unicode エスケープは同じ文字列値を運びます。有効な UTF-16 サロゲートペアで表現された補助文字を含みます。ペアになっていないサロゲートエスケープはドキュメント変更やバイナリー公開の前に失敗します

操作上限には memoryBytes、outputBytes、resultBytes、pixels があります。ドキュメント上限は以前にロードされたハンドルにも適用されますが、管理メモリー / レンダリング上限はプロセス RSS 上限を約束しません

PDF / PNG 出力は出力コールバック開始前に完全に準備され検証されます。呼び出し側所有の出力コールバックは自身の I/O 失敗後に部分転送を保持しえますが、失敗したバイナリー / 結果公開はフォーム編集をコミットせず、以前にロードされたコンテキストも置き換えません

成功した PDF 変更は準備済み出力をカレントドキュメントとそのプライベートソーススナップショットの双方としてコミットします。そのため直後の同一値 FDF / XFDF インポートは、コミット済み PDF バイトを updated=0 つきで正確に返し、以前のフォーム入力、型付きリッチ外観、描画テキスト、インポートページを保持します

プライベートステージングファイルはコンテキストの置換 / 破棄時に削除されます。成功したインクリメンタルフォーム / 署名出力は元のソースプレフィックスと暗号化ポリシーを保持します

エビデンス

オプションのアーカイブフォント修復は、コールバック前に実際の PDF/A-4 検証つきで、上限付き Ghostscript 代替と埋め込みを有効化します

ネイティブ注釈付きレビュー PDF は、セマンティック比較に実際の準備済み PDF 出力、Unicode ハイライト、認証済み P3 注釈権限を追加します

ネイティブコントラクト比較は、上限付き 2 ハンドルセマンティック比較、Unicode レビュー HTML、実際のソース行ジオメトリーを提供します

汎用ネイティブ文書比較はオブジェクトグラフとストリームエンコーディングを正規化し、明示しきい値つきで実際の Cairo ピクセルを比較し、ドキュメント状態とコールバック公開予算を保持します

受け入れクライアントは、実際の C ヘッダーレイアウトとバージョン付きシンボル検索、部分コールバック、80 件の並行共有ハンドル操作、キャンセル、Unicode 編集、ロールバック、暗号化署名を検証します

独立した pypdf・MuPDF・OpenSSL リーダーが、実際の PDF、PNG ピクセル、保持パスワード、セキュリティー辞書、ドキュメント ID、正確な ByteRange ギャップ、有効な署名、改変された署名バイトの拒否を検証します

ヘッドレスドキュメント API · ネイティブレンダリング · 残り提供計画