JSON ジョブ構成
THPDFJobProcessor は、順序付き PDF 操作を記述する JSON ドキュメントを受け入れ、操作ごとのステータスを持つ JSON 結果を返します
サポートされている操作
merge は、AppendPagesFromDocument を使用して複数の入力 PDF を単一の出力ファイルに結合します
split は、ExtractLoadedPagesToPDF を使用して入力 PDF からページ範囲を別々の出力ファイルに抽出します
optimise は、最小節約しきい値で FlateDecode と LZWDecode ストリームを再圧縮します
encrypt は、呼び出し元指定のパスワードとキータイプで AES-256、AES-128、RC4-128、または RC4-40 暗号化を適用します
validate は組み込みの検証ポリシーを実行し、レポートテキストを返します
ocr.layer は、デフォルトの組み込み ASCII エンジン、または明示的に設定されたローカルの Tesseract / RapidOCR CLI と DLL アダプタを通じて検索可能なテキストを生成します。詳しくは 外部 OCR ジョブ構成を参照してください
JSON スキーマ
入力は、区切り文字が有効でコンテナが閉じられ、文字列エスケープが正しく、文字列の外側が JSON の空白だけである 1 つの完全な JSON 値でなければなりません。末尾に内容が続く場合や、有限の Double 範囲外の数値は拒否されます
パーサーは、ルート値を第 1 レベルとして数えて、最大 64 レベルのネストした値を受け入れます。不正または過度に深くネストしたジョブは、どの操作も実行される前に失敗し、部分的に解析された値は解放されます
入力は operations 配列を持つオブジェクトです。各操作には type フィールドとタイプ固有のパラメータがあります
出力は results 配列を持つオブジェクトです。各結果には type、status(ok、error、または skipped)、操作固有のフィールドがあります
文字列値は \u0000 を含むエスケープされた Unicode 文字を保持し、有限数はロケールに依存しない小数点を使い、符号付き 64 ビット範囲を超えてシリアライズされることがあります
数値は Double として保存され、コンパイラランタイムの浮動小数点変換精度に従うため、その正確な整数範囲を超える整数は入力時に丸められることがあります。丸めた値が符号付き整数範囲外のとき、GetInt と GetInt64 は指定された既定値を返します
操作ごとの予算
すべての操作には、memoryBytes、timeMilliseconds、objectCount、decompressionRatio、outputBytes 制限を持つ budget オブジェクトを含めることができます
{"operations":[{"type":"optimise","input":"in.pdf","output":"out.pdf",
"budget":{"memoryBytes":268435456,"timeMilliseconds":30000,
"objectCount":1000000,"decompressionRatio":200,"outputBytes":1073741824}}]}
制限違反があった場合は、後続の操作を中断せずに、status=budget-exceeded に加えて metric、observed、limit、elapsedMilliseconds を返します
メモリ予算はストリームごとおよびドキュメントのデコード会計にも適用されるため、大きなバッファが保持される前に拡張が制限されます
不透明ハンドル API
HPDFDocCreate は THotPDF インスタンスをラップする不透明な THPDFDocHandle を返し、HPDFDocLoadFromFile、HPDFDocGetPageCount、HPDFDocSaveLoadedDocument、HPDFDocRunJob はハンドルを操作し、HPDFDocDestroy はそれを解放します
これらのソース互換の Pascal ヘルパーは、Delphi と C++Builder の呼び出し元で引き続き利用可能です
HotPDF Stable C Callback ABI は、ランダムアクセス入力、ストリーミング出力、キャンセル、進捗、診断、不透明ハンドルライフサイクルのためのフラットなバージョン付き C 境界を提供します