PDFium Delphi Component Docs

Kiểm tra và vá đồ thị đối tượng

Component: TPdf  ·  Units: PDFium, FPdfCompress
Xuất một khung nhìn có kiểu và có giới hạn của các đối tượng gián tiếp đang hoạt động và áp dụng các bản vá từ điển bị ràng buộc theo giao dịch

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

Đối tượng gốc, số đối tượng đang hoạt động, các đối tượng đã xuất, và trạng thái cắt cụt được phát trong phong bì có phiên bản pdf-object-graph-v1

Mỗi giá trị được định danh là từ điển, mảng, chuỗi literal hoặc thập lục phân, tên, tham chiếu, null, Boolean, integer, real, hoặc keyword

Các luồng phơi bày số byte đã mã hóa và, khi được bật, một digest SHA-256, trong khi phần payload của chúng vẫn bị bỏ qua

Các đối tượng trực tiếp và thành viên được vật chất hóa từ các container ObjStm dùng cùng cách biểu diễn

Inspection options

MaxObjectsSố đối tượng đang hoạt động tối đa được ghi trước khi phong bì JSON báo truncated: true
MaxDepthĐộ sâu lồng nhau tối đa của mảng và từ điển, từ 1 đến 32
MaxOutputBytesGiới hạn trên cứng cho toàn bộ luồng byte JSON tương thích UTF-8
MaxStringBytesSố byte tối đa được giữ từ một chuỗi hoặc tên PDF
IncludeStreamDigestsTính SHA-256 trên các byte luồng đã mã hóa mà không giải mã hay xuất payload

Patch model

Mỗi TPdfObjectPatchOperation chọn một số đối tượng, số thế hệ và khóa từ điển cấp trên cùng chính xác, rồi đặt hoặc gỡ khóa đó

Các thao tác set chấp nhận giá trị null, Boolean, integer, real, name, text string, hoặc tham chiếu gián tiếp có kiểu, và không bao giờ chấp nhận cú pháp PDF thô

Mọi định danh đối tượng, số thế hệ, tham chiếu, tên, thao tác trùng lặp, và từ điển đích đều được thẩm định trước khi đầu ra được giao

Khóa độ dài luồng và chuỗi bộ lọc không thể được vá, vì thay đổi chúng độc lập với các byte đã mã hóa sẽ làm hỏng luồng

Bộ ghi nối thêm một bản sửa đổi tăng dần, dựng lại đồ thị hoạt động thu được, tải nó ở chế độ strict qua PDFium, và chỉ khi đó mới ghi luồng của bên gọi hoặc thay thế tệp một cách nguyên tử

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 session, SaveAsObjectStream, SaveAs