PDFium Delphi Component Docs

การตรวจสอบและแพตช์ object graph

Component: TPdf  ·  Units: PDFium, FPdfCompress
ส่งออกมุมมองแบบมีชนิดที่จำกัดขอบเขตของ indirect object ที่ใช้งานอยู่ และใช้แพตช์ dictionary แบบมีข้อจำกัดผ่าน transaction

Syntax

function ExportObjectGraph(Stream: TStream; const Options: TPdfObjectGraphInspectOptions; out Report: TPdfObjectGraphReport): Boolean;

function SaveAsObjectGraphPatched(Stream: TStream; const Operations: TPdfObjectPatchOperations; out Report: TPdfObjectGraphReport; AllowSignedDocument: Boolean = False): Boolean;

function SaveAsObjectGraphPatched(const FileName: string; const Operations: TPdfObjectPatchOperations; out Report: TPdfObjectGraphReport; AllowSignedDocument: Boolean = False): Boolean;

Typed JSON format

ออบเจ็กต์ราก จำนวนออบเจ็กต์ที่ใช้งานอยู่ ออบเจ็กต์ที่ส่งออก และสถานะการตัดทอน ถูกส่งออกในซอง pdf-object-graph-v1 แบบมีเวอร์ชัน

ค่าแต่ละค่าถูกระบุว่าเป็น dictionary, array, สตริง literal หรือเลขฐานสิบหก, name, reference, null, Boolean, integer, real หรือ keyword

stream เปิดเผยจำนวนไบต์ที่เข้ารหัส และ digest แบบ SHA-256 เมื่อเปิดใช้ โดยที่ payload ยังคงถูกละไว้

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

Inspection options

MaxObjectsจำนวนออบเจ็กต์ที่ใช้งานอยู่สูงสุดที่เขียนก่อนที่ซอง JSON จะรายงาน truncated: true
MaxDepthความลึกการซ้อนของ array และ dictionary สูงสุดตั้งแต่ 1 ถึง 32
MaxOutputBytesขอบบนแบบเด็ดขาดของสตรีมไบต์ JSON ที่เข้ากันกับ UTF-8 ทั้งหมด
MaxStringBytesจำนวนไบต์สูงสุดที่เก็บจากสตริงหรือ name หนึ่งรายการของ PDF
IncludeStreamDigestsคำนวณ SHA-256 บนไบต์ของ stream ที่เข้ารหัสแล้ว โดยไม่ถอดรหัสหรือส่งออก payload

Patch model

ทุก TPdfObjectPatchOperation เลือกหมายเลขออบเจ็กต์ generation และคีย์ระดับบนสุดของ dictionary แบบเป๊ะ แล้วตั้งค่าหรือลบคีย์นั้น

การดำเนินการแบบ set ยอมรับค่าแบบมีชนิด null, Boolean, integer, real, name, text string หรือ indirect reference และไม่ยอมรับไวยากรณ์ PDF ดิบ

identity ของออบเจ็กต์ generation การอ้างอิง name การดำเนินการที่ซ้ำกัน และ dictionary เป้าหมายทั้งหมดถูกตรวจสอบก่อนที่ผลลัพธ์จะถูกส่งมอบ

คีย์ความยาวของ stream และห่วงโซ่ filter ไม่สามารถแพตช์ได้ เพราะการเปลี่ยนแปลงโดยแยกจากไบต์ที่เข้ารหัสจะทำให้ stream เสียหาย

ตัวเขียนต่อท้ายรีวิชันเพิ่มเติมหนึ่งรายการ สร้างกราฟที่ใช้งานอยู่ที่ได้ขึ้นมาใหม่ strict-load ผ่าน PDFium และเขียนสตรีมของผู้เรียกหรือแทนที่ไฟล์แบบอะตอมมิกเฉพาะหลังจากนั้น

Policies and limits

Example

Options := TPdfObjectGraphInspectOptions.Default;
Pdf.ExportObjectGraph(JsonStream, Options, Report);
SetLength(Operations, 1);
Operations[0].Kind := popSet;
Operations[0].ObjectNumber := CatalogObjectNumber;
Operations[0].Generation := 0;
Operations[0].Key := 'Lang';
Operations[0].Value.Kind := povTextString;
Operations[0].Value.TextValue := 'en-US';
Pdf.SaveAsObjectGraphPatched('patched.pdf', Operations, Report);

See Also

เซสชัน incremental save, SaveAsObjectStream, SaveAs