PDFium Delphi Component Docs

PageObjectEditTransactionStatus vlastnost

Komponenta: TPdf  ·  Jednotka: PDFium
Hlásí, zda je transakce úprav page objektů aktivní a jak daleko pokročila

Syntaxe

property PageObjectEditTransactionStatus: TPdfPageObjectEditTransactionStatus; // read only

 

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

ActiveTrue mezi BeginPageObjectEditTransaction a odpovídajícím commitem nebo rollbackem
DirtyTrue, jakmile uvnitř transakce proběhla alespoň jedna mutace
PageNumberStránka indexovaná od jedničky, na kterou se transakce při zahájení navázala
MutationCountÚspěšná volání UpdatePage zaznamenaná uvnitř transakce
ContentGenerationCountGenerování obsahu provedená při commitu dirty transakcí

Popis

Transakce úprav page objektů odkládá nativní generování obsahu, takže mutace page objektů — vložení, odstranění, transformace, vlastnosti, content mark a vzhled anotací — se aplikují jako jedna atomická operace v rozsahu stránky. Tato vlastnost vystavuje její živý stav pro hlídače a diagnostiku

MutationCount roste s každou úspěšnou odloženou mutací a každá taková mutace navíc zneplatní cache stránky, takže po úpravě nepřežije žádný zastaralý render, snapshot ani náhled

Commit dirty transakce jednou regeneruje obsah stránky a zvýší ContentGenerationCount. Commit transakce bez operací nebo rollback obnoví základní stav bez generování

Poznámky

Commit i rollback vymažou Active a Dirty, ale ponechají PageNumber a obě počítadla jako finální diagnostiku, dokud nová transakce nezačne a neresetuje je

Mimo transakci má každé pole svou výchozí hodnotu, takže Active = False je spolehlivý test nečinnosti

Stav se týká jen transakcí page objektů; transakce na úrovni dokumentu otevřené přes BeginEditTransaction hlásí editační journal

Příklad

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;

Viz také

PageObjectEditTransaction, BeginEditTransaction, CommitEditTransaction, RollbackEditTransaction, UpdatePageObject