property PageObjectEditTransactionStatus: TPdfPageObjectEditTransactionStatus; // read only
type TPdfPageObjectEditTransactionStatus = record
Active: Boolean;
Dirty: Boolean;
PageNumber: Integer;
MutationCount: Integer;
ContentGenerationCount: Integer;
end;
| Active | BeginPageObjectEditTransaction부터 짝이 되는 커밋 또는 롤백 사이에서 True입니다 |
| Dirty | 트랜잭션 안에서 변경이 하나라도 실행된 순간 True입니다 |
| PageNumber | 트랜잭션이 시작될 때 묶였던 1 기반 페이지입니다 |
| MutationCount | 트랜잭션 안에서 기록된 성공적인 UpdatePage 호출 수입니다 |
| ContentGenerationCount | 변경이 있는 트랜잭션을 커밋할 때 수행된 콘텐츠 재생성 횟수입니다 |
페이지 객체 편집 트랜잭션은 네이티브 콘텐츠 재생성을 지연시켜서 페이지 객체 삽입, 제거, 변환, 속성, 콘텐츠 마크, 주석 모양 변경이 하나의 원자적 페이지 범위 연산으로 적용되게 합니다. 이 속성은 가드와 진단에 쓸 수 있도록 트랜잭션의 실시간 상태를 노출합니다
MutationCount는 성공한 지연 변경마다 증가하고, 그런 변경은 페이지 캐시도 무효화하므로 편집 이후에 낡은 렌더링, 스냅샷, 썸네일이 남지 않습니다
변경이 있는 트랜잭션을 커밋하면 페이지 콘텐츠를 한 번 재생성하고 ContentGenerationCount를 증가시킵니다. no-op 트랜잭션을 커밋하거나 롤백하면 재생성 없이 기준 상태를 복원합니다
커밋과 롤백은 Active와 Dirty를 지우지만 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;