property PageObjectEditTransactionStatus: TPdfPageObjectEditTransactionStatus; // read only
type TPdfPageObjectEditTransactionStatus = record
Active: Boolean;
Dirty: Boolean;
PageNumber: Integer;
MutationCount: Integer;
ContentGenerationCount: Integer;
end;
| Active | True mezi BeginPageObjectEditTransaction a odpovídajícím commitem nebo rollbackem |
| Dirty | True, jakmile uvnitř transakce proběhla alespoň jedna mutace |
| PageNumber | Stránka indexovaná od jedničky, na kterou se transakce při zahájení navázala |
| MutationCount | Úspěšná volání UpdatePage zaznamenaná uvnitř transakce |
| ContentGenerationCount | Generování obsahu provedená při commitu dirty transakcí |
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í
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
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;