PDFium Delphi Component Docs

คุณสมบัติ PageObjectEditTransactionStatus

Component: TPdf  ·  Unit: PDFium
รายงานว่าธุรกรรมแก้ไข page object กำลัง active อยู่หรือไม่ และคืบหน้าไปถึงไหนแล้ว

Syntax

property PageObjectEditTransactionStatus: TPdfPageObjectEditTransactionStatus; // read only

 

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

Activeเป็น True ระหว่าง BeginPageObjectEditTransaction กับ commit หรือ rollback ที่ปิดท้าย
Dirtyเป็น True เมื่อมี mutation รันภายในธุรกรรมแล้วอย่างน้อยหนึ่งรายการ
PageNumberหน้าแบบเริ่มที่ 1 ที่ธุรกรรมผูกไว้ตั้งแต่เริ่มต้น
MutationCountจำนวนการเรียก UpdatePage ที่สำเร็จซึ่งถูกบันทึกไว้ภายในธุรกรรม
ContentGenerationCountจำนวนครั้งที่สร้าง content ใหม่ตอน commit ธุรกรรมที่มีการเปลี่ยนแปลง

Description

ธุรกรรมแก้ไข page object จะเลื่อนการสร้าง content ระดับ native ออกไป เพื่อให้ mutation ของ page object ทั้งการเพิ่ม ลบ transform คุณสมบัติ content-mark และลักษณะปรากฏของ annotation ถูกนำไปใช้เป็นการทำงานเดียวแบบ atomic ที่ผูกกับหน้า คุณสมบัตินี้เปิดเผยสถานะปัจจุบันของธุรกรรมไว้ใช้เป็นเงื่อนไขป้องกันและวิเคราะห์ปัญหา

MutationCount จะเพิ่มขึ้นทุกครั้งที่ mutation ที่เลื่อนไว้สำเร็จ และแต่ละครั้งยังทำให้ cache ของหน้าใช้ไม่ได้อีกด้วย render, snapshot หรือ thumbnail เก่า ๆ จึงรอดจากการแก้ไขไม่ได้

การ commit ธุรกรรมที่มีการเปลี่ยนแปลงจะสร้าง content ของหน้าใหม่หนึ่งครั้งและเพิ่ม ContentGenerationCount ส่วนการ commit ธุรกรรมที่ไม่มีอะไรเปลี่ยนหรือการ rollback จะคืน baseline โดยไม่สร้างใหม่

Remarks

commit และ rollback จะล้าง Active กับ Dirty แต่เก็บ PageNumber และตัวนับทั้งสองไว้เป็นข้อมูลสรุปสุดท้าย จนกว่าธุรกรรมถัดไปเริ่มต้นแล้วจึงรีเซ็ต

นอกธุรกรรมทุกฟิลด์จะเป็นค่าเริ่มต้น Active = False จึงเป็นวิธีตรวจสถานะว่างที่เชื่อถือได้

สถานะนี้ครอบคลุมเฉพาะธุรกรรม page object ธุรกรรมระดับเอกสารที่เปิดด้วย BeginEditTransaction รายงานผ่าน edit journal

Example

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;

See Also

PageObjectEditTransaction, BeginEditTransaction, CommitEditTransaction, RollbackEditTransaction, UpdatePageObject