การเรนเดอร์แบบค่อยเป็นค่อยไปและการยกเลิก
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 ให้โอเวอร์โหลดที่รับโทเค็นโดยตรง
ความเป็นเจ้าของและกฎผลลัพธ์บางส่วน
- เอกสารและโทเค็นต้องมีอายุเกินทุก
THPDFLoadedPageRenderSessionที่อ้างถึง - การโหลดที่ถูกยกเลิกสามารถตามด้วยการโหลดใหม่บนอินสแตนซ์เอกสารเดียวกัน
- การปรับสตรีมเป็นแบบร่วมมือแทนแบบธุรกรรม สตรีมที่เสร็จก่อนการยกเลิกจึงยังถูกปรับให้เหมาะสม
- ปลายทางการลงนามที่ถูกยกเลิกอาจมีเอาต์พุตบางส่วนและควรทิ้งเมื่อต้องการการส่งแบบอะตอมิก
- การเรียกผู้ให้บริการคีย์ส่วนตัว Windows ไม่สามารถถูกขัดจังหวะได้อย่างปลอดภัย การยกเลิกจึงถูกสังเกตทันทีก่อนและหลังการเรียกนั้น