PDFium Delphi Component Docs

FPdfContentNormalize ユニット

ユニット: FPdfContentNormalize
1 つの論理的な PDF ページコンテンツシーケンスに対する構文を保持する正規化と、堅牢なインライン画像境界検出です

構文

const
  PdfContentNormalizeDefaultInputLimit = Int64(256) * 1024 * 1024;
  PdfContentNormalizeDefaultOutputLimit = Int64(256) * 1024 * 1024;
  PdfContentNormalizeDefaultTokenLimit = 10000000;

function NormalizePdfContentSequence(const Streams: array of TBytes;
  const Options: TPdfContentNormalizeOptions; out Output: TBytes;
  out Report: TPdfContentNormalizeReport): Boolean;

function CollectPdfContentResourceUses(const Data: TBytes;
  out Uses: TPdfContentResourceUses;
  out ErrorText: string): Boolean;

function FindInlineImageBlock(const Data: TBytes; StartPos: Integer;
  out BiPos, IdPos, DataStart, EndImageStart: Integer): Boolean;

説明

NormalizePdfContentSequence は指定されたコンテンツストリームを配列順に連結し、その結果を 1 つの論理的なページコンテンツシーケンスとしてトークン化します

トークン区切りを正規化しながら、リテラル文字列、16 進文字列、名前、配列、辞書、インライン画像ペイロード、未知のオペレータを保持します。コメントは除去でき、構造のバランスを要求することもできます

CollectPdfContentResourceUses は、中央のトークン予算の下で、テキスト、XObject、グラフィックス状態、色空間、パターン、シェーディング、marked-content プロパティ、インライン画像の各オペレータが消費するリソース名を記録します

FindInlineImageBlock は、画像ペイロードデータ内の EI バイトシーケンスを終端と誤認せずに、完全な BIIDEI ブロックを特定します

定数

定数説明
PdfContentNormalizeDefaultInputLimitページあたりの論理入力の既定上限 256 MiB です
PdfContentNormalizeDefaultOutputLimitページあたりの正規化出力の既定上限 256 MiB です
PdfContentNormalizeDefaultTokenLimitページあたりの既定上限 10000000 トークンです

関数

関数説明
TPdfContentNormalizeOptions.Defaultコメント除去、バランス検証、有益な Flate 圧縮、安全でないページのスキップを有効にします。署名付き書き換えを禁止し、3 つの既定上限を適用します
NormalizePdfContentSequence正規化済みバイトと詳細なレポートを返します。失敗時には False と失敗ステータス、診断テキストを返します
CollectPdfContentResourceUsesリソースを消費するコンテンツオペレータごとに、リソース種別とデコード済み PDF 名を返します。不正または予算超過の入力には False と診断テキストを返します
FindInlineImageBlockStartPos 以降にある次の完全なインライン画像ブロックのオフセットを返します

説明
TPdfContentNormalizeStatusシーケンスおよびドキュメント正規化の結果または失敗カテゴリです
TPdfContentNormalizeOptions正規化ポリシーと、ページあたりのバイトおよびトークン上限です
TPdfContentNormalizeReportステータス、バイトとページの合計、ストリームとトークンの指標、構文の観察結果、診断テキストです
TPdfContentResourceKindリソース値 pcrkFontpcrkXObjectpcrkExtGStatepcrkColorSpacepcrkPatternpcrkShadingpcrkProperties です
TPdfContentResourceUseデコード済みリソースの Name とその Kind の組です
TPdfContentResourceUsesコンテンツ順に収集されたリソース使用の動的配列です

ステータス値

意味
pcnsNotStartedレポートは初期化済みですが、正規化は完了していません
pcnsCompleted正規化が正常に完了しました
pcnsInputLimitExceeded論理入力が MaxInputBytesPerPage を超えたか、設定された上限が正でありません
pcnsOutputLimitExceeded正規化済みバイトが MaxOutputBytesPerPage を超える見込みです
pcnsTokenLimitExceededコンテンツシーケンスが MaxTokensPerPage を超えました
pcnsMalformedTokenPDF コンテンツトークンを完全に読み取れませんでした
pcnsUnresolvedInlineImage完全なインライン画像ペイロードの境界が見つかりませんでした
pcnsUnbalancedState要求されたグラフィックス、テキスト、marked-content、互換、配列、辞書スコープのバランス検証に失敗しました
pcnsUnsupportedFilterドキュメントレベルの正規化が、デコードできないコンテンツストリームフィルタに遭遇しました
pcnsEncryptedDocumentドキュメントレベルの正規化が暗号化された入力を拒否しました
pcnsSignedDocumentドキュメントレベルの正規化が、認可のない署名付き入力を拒否しました
pcnsDocumentRewriteFailed外側の PDF オブジェクトグラフ書き換えまたは検証に失敗しました
pcnsResourceBudgetExceeded正規化の完了前にプロセス全体の TPdfParserResourceBudget の期限に達しました

オプション

フィールド説明
RemoveComments必要なトークン境界を保持したまま PDF コメントを省略します
RequireBalancedStateq/QBT/ET、marked-content、互換、配列、辞書スコープのバランスを要求します
CompressOutput圧縮がサイズを減らす場合に、ドキュメントレベルのラッパーが正規化済みページストリームを Flate 圧縮することを許可します
SkipUnsafePages安全でないまたは未対応の結果に対して、ドキュメント書き換えを中止する代わりに、ドキュメントレベルの正規化がページを変更せず保持することを許可します
AllowSignedDocument署名付き入力の完全書き換えを明示的に許可します。既存の署名バイトレンジは無効化されます
MaxInputBytesPerPage1 ページに供給されるコンテンツストリームの合計バイト数の上限です
MaxOutputBytesPerPage正規化済みコンテンツシーケンスに許容されるバイト数の上限です
MaxTokensPerPage1 ページについて検査されるトークン数の上限です

レポートフィールド

フィールド説明
Status現在の TPdfContentNormalizeStatus です
SourceByteCountソースコンテンツの合計バイト数です
OutputByteCount正規化または書き換え済み出力の合計バイト数です
PageCountドキュメントレベルの正規化が検査したページ数です
NormalizedPageCount正規化済みコンテンツへの置き換えに成功したページ数です
SkippedPageCountスキップポリシーの下で変更されず保持された安全でないページの数です
InputStreamCount論理ページシーケンスへ連結されたソースコンテンツストリームの数です
OutputStreamCount生成された正規化済みコンテンツストリームの数です
CoalescedArrayCount1 つの正規化済みストリームへ置き換えられた複数ストリームの /Contents 配列の数です
TokenCount処理されたトークン数です
CommentCount保持/除去の別を問わず遭遇したコメントの数です
InlineImageCount保持された完全なインライン画像ブロックの数です
UnknownOperatorCountそのまま保持された未認識オペレータの数です
ErrorMessage最初の失敗に対する診断テキストです

インライン画像のオフセット

関連項目

FPdfCompress, TPdf.SaveAsNormalizedContent