PDFium Delphi Component Docs

FlattenPageRotation メソッド

コンポーネント: TPdf  ·  ユニット: PDFium
全ページの現在の /Rotate をコンテンツストリーム、ページボックス、注釈矩形に焼き込み、/Rotate を 0 にリセットするため、回転表示ヒントに依存せず視覚レイアウトが保持されます

構文

function FlattenPageRotation(
  const Options : TPdfFlattenRotationOptions;
  out Report : TPdfFlattenRotationReport): Boolean; overload;

function FlattenPageRotation(
  const PageNumbers : array of Integer;
  const Options : TPdfFlattenRotationOptions;
  out Report : TPdfFlattenRotationReport): Boolean; overload;

説明

多くの下流ツール(古い印刷パイプライン、画像抽出ツール、 OCR 前処理、ラスタコンバーター)は /Rotate ページエントリを無視し、回転ページを誤った向きでレンダリングします。 FlattenPageRotation は現在の回転の逆を ページコンテンツ、注釈矩形、ページボックスに適用し、 /Rotate を 0 に設定します。呼び出し後、表示されるページは 回転された元と同一ですが、ビューアが回転ヒントを適用することに 依存しなくなります

単一引数のオーバーロードはすべてのページを処理し、 PageNumbers オーバーロードは 0 始まりの配列を受け取るため、呼び出し側は サブセットをフラット化できます。既に /Rotate=0 のページは Report.SkippedPageCount に数えられ、 変更されません

内部的には、回転された各ページについて、コンテンツには FPDFPage_CountObjects + FPDFPage_GetObject + FPDFPageObj_TransformF を実行し、注釈には FPDFPage_GetAnnot + FPDFAnnot_GetRect / FPDFAnnot_SetRect を実行し、ページボックスには FPDFPage_SetMediaBox / FPDFPage_SetCropBox を実行し、最後に FPDFPage_SetRotation を 0 で実行します。マトリックスは FPDFPage_GetMediaBox が返す 未回転の MediaBox から導出されます

パラメーター

備考

例

var
  Options: TPdfFlattenRotationOptions;
  Report: TPdfFlattenRotationReport;
begin
  Pdf1.FileName := 'C:\Scanned.pdf';
  Pdf1.Active := True;
  Options := TPdfFlattenRotationOptions.Default;
  Pdf1.FlattenPageRotation(Options, Report);
  Pdf1.SaveAs('C:\Scanned_flat.pdf');
end;

関連項目

PageRotation, TransformPageObject, SetPageBox