การเรนเดอร์แบบค่อยเป็นค่อยไปและการยกเลิก

HotPDF สามารถเรนเดอร์หน้าที่โหลดผ่านการเรียกแบบมีขอบเขตหลายครั้ง และสามารถหยุดการทำงานเอกสารที่ยาวผ่านโทเค็นการยกเลิกที่ผู้เรียกเป็นเจ้าของที่ใช้ร่วม

การเรนเดอร์หน้าแบบค่อยเป็นค่อยไป

Session := PDF.BeginLoadedPageProgressiveRender(0, 144);
try
  repeat
    Status := Session.ContinueRender(8, 128);
    Preview.Assign(Session.Bitmap);
  until Status in [prsCompleted, prsCancelled];

  if Status = prsCompleted then
    FinalBitmap := Session.TakeBitmap;
finally
  Session.Free;
end;

ContinueRender รับเวลาสูงสุดเป็นมิลลิวินาที จำนวนตัวดำเนินการเนื้อหาหน้าระดับบนสุด หรือทั้งสอง ศูนย์หมายถึงไม่จำกัดงบประมาณนั้น

การเรียกทำตัวดำเนินการอย่างน้อยหนึ่งก่อนใช้งบประมาณเวลาที่ไม่เป็นศูนย์ สถานะกราฟิกจึงถูกหยุดที่ขอบเขตตัวดำเนินการเสมอ

Bitmap เปิดเผยบิตแมปบางส่วนสดที่ผู้เรียกอ่านได้อย่างเดียว ขณะที่ TakeBitmap โอนความเป็นเจ้าของโดยไม่คัดลอกหลังเซสชันถึง prsCompleted หรือ prsCancelled

ObjectsProcessed และ TotalObjects รายงานตัวดำเนินการเนื้อหาหน้าระดับบนสุดจากทุกสตรีม /Contents ตามลำดับต้นทาง

การเรนเดอร์ภูมิภาคแบบค่อยเป็นค่อยไป

Session := PDF.BeginLoadedPageProgressiveRegionRender(
  0, 72, 144, 360, 432, 144);
try
  repeat
    Status := Session.ContinueRender(6, 96);
  until Status in [prsCompleted, prsCancelled];
finally
  Session.Free;
end;

พิกัดทั้งสี่ของภูมิภาคเป็นจุดในพื้นที่ผู้ใช้ PDF โดยมีต้นกำเนิดล่างซ้าย และบิตแมปเอาต์พุตครอบคลุมหน้าต่างนั้นพอดีที่ DPI ที่ร้องขอ

เซสชันใช้รายการแสดงผลที่แคชซ้ำ คงสถานะกราฟิกและข้อความตลอดการเรียก และระงับสีของเส้นทาง ข้อความ ภาพ ฟอร์ม และการแรเงาที่แพงซึ่งขอบเขตอนุรักษ์นิยมไม่ตัดกับ ROI

ตัวดำเนินการสถานะและการเลื่อนข้อความยังทำงานตามลำดับต้นทาง การตัดเครื่องหมายก่อนหน้าจึงไม่ย้ายหรือย้อมสีเครื่องหมายหลังที่มองเห็น

RegionVisiblePaintObjects และ RegionCulledPaintObjects เปิดเผยการเลือกชุดรายการแสดงผล ขณะที่การสำรองหน่วยความจำสูงสุดตามขนาดภูมิภาคแทนที่จะเป็นหน้าทั้งหน้า

สแกน JPEG แบบค่อยเป็นค่อยไป

เมื่อ THotPDF.ProgressiveJPEGScanDecoding เป็นจริง ภาพ DCTDecode แบบค่อยเป็นค่อยไปที่เข้าเกณฑ์ก้าวหน้าหนึ่งสแกน JPEG ต่อการเรียก ContinueRender แบบมีขอบเขต เพื่อให้บิตแมปสดแสดงตัวอย่างหยาบก่อนหน้าสแกนสุดท้าย

THotPDF.ProgressiveJPEGMaxScans จำกัดแต่ละภาพระหว่าง 1 ถึง 4096 สแกน ขณะที่งบประมาณไบต์ถอดรหัสเอกสารยังครอบคลุมบิตแมปเอาต์พุตที่เรียงแนว

THPDFLoadedPageRenderSession.ProgressiveJPEGScansDecoded และ THPDFLoadedPageRenderSession.ProgressiveJPEGImagesDecoded รายงานจำนวนสแกนและภาพที่เสร็จ THPDFLoadedPageRenderSession.OnProgressiveJPEGScan รับ THPDFProgressiveJPEGScanEvent หลังแต่ละสแกนที่มองเห็นและสามารถยกเลิกเซสชันได้

ยูนิต HPDFJpeg ยังเปิดเผย THPDFJpegScanDecoder สำหรับอินพุต THPDFJpegByteArray ดิบ พร้อมผลลัพธ์ THPDFJpegScanDecodeStatus และคอลแบ็ก THPDFJpegCancellationCheck ไม่บังคับสำหรับการยกเลิกระดับแถว

เส้นทางแบบเพิ่มทีละส่วนยอมรับการทาสีภาพ JPEG DeviceRGB หรือ DeviceGray เต็มเป้าหมายด้วยความทึบเริ่มต้นและไม่มีมาสก์ ฟังก์ชันถ่ายโอน ฮาล์ฟโทน การซ้อนทับ หรือสถานะกลุ่มความโปร่งใส สีอื่นทั้งหมดใช้ตัวถอดรหัสภาพสมบูรณ์เพื่อคงความหมายการเรนเดอร์

การปิดตัวเลือก การต้องแยกตัวแปลงรหัส การเกินขีดจำกัด หรือพบอินพุตที่ผิดรูปแบบ ยังเลือกเส้นทางภาพสมบูรณ์โดยไม่เปิดเผยการถอดรหัสบางส่วนที่ล้มเหลว

คอลแบ็กความคืบหน้า

THPDFProgressiveRenderProgressEvent รันหลังตัวดำเนินการที่เสร็จแต่ละตัวและรับจำนวนที่ประมวลผลและทั้งหมดบวกเวลาการทำงานการเรนเดอร์

ตั้งพารามิเตอร์คอลแบ็ก Cancel เป็นจริงเพื่อจบเซสชันนั้นใน prsCancelled โดยไม่ยกเลิกโทเค็นที่ใช้ร่วม

Form XObject แพตเทิร์น การถอดรหัสภาพ หรือการทำงานปิดอื่นเป็นของตัวดำเนินการระดับบนสุดที่ครอบอยู่ และอาจเกินงบประมาณเวลาเล็กน้อยก่อนควบคุมกลับ

การยกเลิกตลอดการทำงาน

Token := THPDFCancellationToken.Create;
try
  PDF.OperationCancellationToken := Token;
  Worker.Start;
  // Call Token.Cancel from another thread when the operation should stop
finally
  PDF.OperationCancellationToken := nil;
  Token.Free;
end;

THPDFCancellationToken ปลอดภัยต่อเธรด ใช้ครั้งเดียว และเป็นของผู้เรียก Cancel ขอการยกเลิกเป็นการถาวรและ IsCancellationRequested เปิดเผยสถานะ

ThrowIfCancellationRequested ทำให้เกิด EHPDFOperationCancelled และเก็บชื่อการทำงานใน OperationName

THotPDF.OperationCancellationToken ใช้กับโหลด เรนเดอร์ซิงโครนัส เรนเดอร์แบบค่อยเป็นค่อยไปโดยไม่มีโทเค็นชัดเจน OptimizeLoadedStreams CreatePreflightReport และ ValidatePDFVT

SignPDFWithPFX และ SignPDFWithSystemCertificate ให้โอเวอร์โหลดที่รับโทเค็นโดยตรง

ความเป็นเจ้าของและกฎผลลัพธ์บางส่วน

API ที่เกี่ยวข้อง