PDFium Delphi Component Docs

PageObjectEditTransactionStatus プロパティ

コンポーネント: TPdf  ·  ユニット: PDFium
ページオブジェクト編集トランザクションがアクティブかどうか、およびどこまで進んでいるかを報告します

構文

property PageObjectEditTransactionStatus: TPdfPageObjectEditTransactionStatus; // read only

 

type TPdfPageObjectEditTransactionStatus = record
  Active: Boolean;
  Dirty: Boolean;
  PageNumber: Integer;
  MutationCount: Integer;
  ContentGenerationCount: Integer;
end;

ActiveBeginPageObjectEditTransaction から対応するコミットまたはロールバックまでの間 True
Dirtyトランザクション内で少なくとも 1 つの変更が実行された後 True
PageNumberトランザクションが開始されたときに結び付けられた 1 基点のページ
MutationCountトランザクション内で記録された成功した UpdatePage 呼び出しの数
ContentGenerationCount変更のあるトランザクションをコミットした際に実行されたコンテンツ生成の回数

説明

ページオブジェクト編集トランザクションはネイティブのコンテンツ生成を延期するため、ページオブジェクトの挿入、削除、変換、プロパティ、コンテンツマーク、注釈外観の変更が 1 つのアトミックなページ単位操作として適用されます。このプロパティは、ガードや診断のためにそのライブ状態を公開します

MutationCount は成功した延期済み変更ごとに進み、そのような変更はどれもページキャッシュを無効化するため、古いレンダリング、スナップショット、サムネイルが編集をまたいで残ることはありません

変更のあるトランザクションをコミットするとページコンテンツが 1 回再生成され、ContentGenerationCount が進みます。何もしないトランザクションのコミットやロールバックは生成を行わずにベースラインを復元します

備考

コミットとロールバックは ActiveDirty をクリアしますが、PageNumber と両カウンタは最終的な診断値として残り、次のトランザクションが開始されてリセットされるまで維持されます

トランザクションの外ではすべてのフィールドが既定値を保持するため、Active = False が確実なアイドル判定になります

このステータスはページオブジェクトトランザクションのみを対象とします。BeginEditTransaction で開かれる文書レベルのトランザクションは編集ジャーナルが報告します

Pdf.BeginPageObjectEditTransaction;
try
  Pdf.TransformPageObject(0, Matrix);
  Status := Pdf.PageObjectEditTransactionStatus;
  LogTransactionProgress(Status.MutationCount, Status.Dirty);
  Pdf.CommitPageObjectEditTransaction;
except
  if Pdf.PageObjectEditTransactionStatus.Active then
    Pdf.RollbackPageObjectEditTransaction;
  raise;
end;

関連項目

PageObjectEditTransaction, BeginEditTransaction, CommitEditTransaction, RollbackEditTransaction, UpdatePageObject