property PageObjectEditTransactionStatus: TPdfPageObjectEditTransactionStatus; // read only
type TPdfPageObjectEditTransactionStatus = record
Active: Boolean;
Dirty: Boolean;
PageNumber: Integer;
MutationCount: Integer;
ContentGenerationCount: Integer;
end;
| Active | True între BeginPageObjectEditTransaction și commit-ul sau rollback-ul corespunzător |
| Dirty | True de îndată ce cel puțin o mutație a rulat în interiorul tranzacției |
| PageNumber | Pagina cu numerotare de la unu la care tranzacția a fost legată la început |
| MutationCount | Apelările UpdatePage reușite înregistrate în interiorul tranzacției |
| ContentGenerationCount | Generările de conținut efectuate la commit-ul tranzacțiilor cu modificări |
O tranzacție de editare a obiectelor de pagină amână generarea nativă de conținut, astfel încât mutațiile de inserare, eliminare, transformare, de proprietăți, de marcaj de conținut și de aspect al adnotărilor se aplică ca o singură operație atomică delimitată la pagină. Această proprietate expune starea ei în timp real, pentru garduri și diagnostice
MutationCount avansează cu fiecare mutație amânată reușită, iar fiecare astfel de mutație invalidează și cache-urile paginii, astfel încât niciun randament, instantaneu sau thumbnail învechit nu supraviețuiește editării
Commit-ul unei tranzacții cu modificări regenerează conținutul paginii o singură dată și avansează ContentGenerationCount. Commit-ul unei tranzacții fără efect sau rollback-ul restabilește referința fără generare
Commit-ul și rollback-ul șterg Active și Dirty, dar lasă PageNumber și ambele contoare drept diagnostice finale, până când următoarea tranzacție începe și le resetează
În afara unei tranzacții fiecare câmp păstrează valoarea implicită, deci Active = False este testul fiabil de inactivitate
Starea acoperă doar tranzacțiile de obiecte de pagină; tranzacțiile la nivel de document deschise cu BeginEditTransaction sunt raportate de jurnalul de editare
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;