LoadFromRangeSource
การจัดการเอกสาร, ประสิทธิภาพ
คำอธิบาย
โหลดและเลือก PDF ผ่านคอลแบ็กเข้าถึงแบบสุ่มแบบซิงโครนัส ทำให้ไคลเอนต์ HTTP ฐานข้อมูล คลังวัตถุ และผู้ให้บริการจัดเก็บแบบกำหนดเอง ให้เฉพาะช่วงไบต์ที่ตัวแยกวิเคราะห์แตะจริง
ไวยากรณ์
Delphi
Function TPDFlib.LoadFromRangeSource(SourceSize: Int64;
ReadCallback: TPDFlibRangeReadEvent; Const Password: WideString;
ChunkSize: LongInt= 0; CacheLimitBytes: Int64= 0;
CoalesceWindowMS: Cardinal= PDF_NET_DEFAULT_COALESCE_WINDOW_MS;
AvailabilityCallback: TPDFlibRangeAvailabilityEvent= Nil): Integer;พารามิเตอร์
| SourceSize | ขนาดซอร์สรวมที่เชื่อถือได้เป็นไบต์ |
|---|---|
| ReadCallback | คอลแบ็กที่คัดลอกไบต์สำหรับออฟเซตซอร์สแบบสัมบูรณ์ |
| Password | รหัสผ่านที่ใช้เปิด PDF หรือสตริงว่างสำหรับเอกสารที่ไม่เข้ารหัสลับ |
| ChunkSize | ความละเอียดการดึงช่วงแบบจัดแนว ศูนย์เลือกค่าเริ่มต้น 64 KiB และค่าที่ต่ำกว่า 4096 ก็ใช้ค่าเริ่มต้นด้วย |
| CacheLimitBytes | จำนวนไบต์สูงสุดที่เก็บครอบคลุมหน้าต่างที่ใช้ล่าสุด ศูนย์เลือกค่าเริ่มต้น 4 MiB และค่าที่ต่ำกว่าหนึ่งก้อนถูกยกขึ้นเป็นหนึ่งก้อน |
| CoalesceWindowMS | หน้าต่างการรวบรวมสำหรับก้อนแรกที่ยังไม่แคชของการอ่านแบบสัมบูรณ์แต่ละครั้ง ค่าเริ่มต้น 2 มิลลิวินาที และศูนย์ปิดการหน่วงเริ่มต้น |
| AvailabilityCallback | การทดสอบเสริมที่ไม่ดึงข้อมูล เพื่อตรวจช่วงไบต์ที่มีอยู่แล้วในพื้นที่จัดเก็บแบบค่อยเป็นค่อยไป |
ค่าที่ส่งกลับ
| 0 | อาร์กิวเมนต์ซอร์สไม่ถูกต้องหรือโหลด PDF ไม่สำเร็จ ให้ตรวจ LastErrorCode |
|---|---|
| 1 | โหลดและเลือกเอกสารแล้ว |
หมายเหตุ
คอลแบ็กอ่านได้รับออฟเซตแบบสัมบูรณ์แบบนับจาก 0 และต้องเขียนไม่เกิน Count ไบต์ลง Buffer โดยส่งคืนจำนวนที่เขียนปลายทางของคอลแบ็กและพื้นที่จัดเก็บรองรับต้องยังใช้ได้จนกว่าเอกสารที่โหลดไว้จะถูกปิด เพราะการเรนเดอร์หน้า การดึงข้อมูล และการบันทึกอาจร้องขอช่วงเพิ่มเติมภายหลังการเรียกเป็นแบบซิงโครนัสและอาจมาถึงไม่เรียงลำดับ ผลที่สั้นกว่ายอมรับได้ที่ท้ายไฟล์ตามกายภาพ ส่วนผลศูนย์ที่ไม่คาดคิดทำให้การโหลดหรือการดำเนินการเลื่อนเวลาปัจจุบันล้มเหลวเมื่อกำหนด
AvailabilityCallback ไว้ ให้ส่งคืนค่าไม่เป็นศูนย์เมื่ออ่านช่วงที่ร้องขอทั้งช่วงได้ทันทีโดยไม่ต้องขนส่งหรือ I/O แบบบล็อกเท่านั้นช่วงที่แคชไว้พร้อมใช้ไม่ว่าผลของคอลแบ็กจะเป็นอย่างไร คอลแบ็ก
Nil คงพฤติกรรมแบบซิงโครนัสโดยถือว่าช่วงซอร์สที่ถูกต้องทุกช่วงพร้อมใช้ก้อนที่จัดแนวเลี่ยงการดึงข้อมูลผ่านขนส่งซ้ำสำหรับการอ่านที่ซ้อนทับกัน ส่วนงบไบต์จำกัดเพย์โหลดที่เก็บไว้โดยไม่ขึ้นกับขนาดเอกสารการอ่านวัตถุและเซกเมนต์แบบเลื่อนเวลาใช้ออฟเซตแบบสัมบูรณ์ งานพร้อมกันจึงใช้คำขอก้อนเดียวกันร่วมกันและรวมก้อนที่ติดกันในคิว โดยไม่เปลี่ยนตัวชี้ตำแหน่งของสตรีมคอลแบ็กซอร์สถูกเรียงให้ทำงานทีละอัน และต้องไม่อ่านจากสตรีมช่วงเดียวกันแบบเรียกซ้ำใช้
GetRangeSourceDataAvailability
GetRangeSourceCacheInfo ทดสอบการขึ้นต่อกันของหน้า ฟอร์ม หรือวัตถุทางอ้อม โดยไม่อ่านช่วงที่รายงานว่าขาดหายใช้ SetRangeSourceCacheLimit, ClearRangeSourceCache และ