PDFium Delphi Component Docs

Incremental save نشست

کامپوننت: TPdf  ·  واحد: PDFium
تنها شیءهای غیرمستقیم تغییر یافته یا جدید را می‌افزاید در حالی که هر بایت خروجی پیشین حفظ می‌شود

Syntax

procedure BeginIncrementalSave(AllowSignedDocument: Boolean = False);

function CommitIncrementalSave(Stream: TStream; out Info: TPdfIncrementalCommitInfo): Boolean;

function CommitIncrementalSave(const FileName: string; out Info: TPdfIncrementalCommitInfo): Boolean;

procedure EndIncrementalSave;

property IncrementalSaveActive: Boolean;

AllowSignedDocumentاجرای نشست روی یک سند امضاشده را صریحاً مجاز می‌کند؛ حالت پیش‌فرض آن را رد می‌کند
StreamTStream که PDF انباشتهٔ کامل را پس از این commit دریافت می‌کند
FileNameمسیر خروجی که تنها پس از موفقیت یک فایل موقت هم‌شاخه جایگزین می‌شود
Infoآمار به‌ازای هر commit که پس از موفقیت نوشتن مقصد برگردانده می‌شود

Commit Information

ChangedObjectCountشمار شیءهای غیرمستقیم تغییر یافته یا جدیدی که توسط این commit افزوده شده‌اند
AppendedByteCountبایت‌های افزوده‌شده پس از پیشوند دقیق خروجی قبلی
OutputByteCountکل بایت‌های خروجی کامل برگردانده‌شده توسط این commit
RevisionCountشمار بازبینی‌های ناخالی commit‌شده در نشست فعلی

Description

BeginIncrementalSave یک عکس لحظه‌ای معنایی PDFium پایدار را هم به‌عنوان خط مبنا مقایسه و هم به‌عنوان نخستین خروجی کامل ثبت می‌کند

هر commit وضعیت فعلی را ثبت می‌کند، شیءهای فعال classic، hybrid، xref-stream و object-stream را تفکیک می‌کند، سپس تولید شیء و بایت‌های دقیق بدنه را مقایسه می‌کند

تنها شیءهای غیرمستقیم تغییر یافته یا جدید پس از خروجی قبلی نوشته می‌شوند و پس از آن‌ها کوچک‌ترین بازبینی لازم xref و trailer

یک منبع classic-xref با جدول‌های xref کلاسیک ادامه می‌یابد، در حالی که منبع xref-stream با جریان‌های xref خودنمایه ادامه می‌یابد

اگر چیزی تغییر نکرده باشد، خروجی قبلی بایت‌به‌بایت برگردانده می‌شود، هیچ بازبینی افزوده نمی‌شود و RevisionCount پیش نمی‌رود

صورت overload مربوط به فایل یک فایل موقت هم‌شاخه می‌نویسد، مقصد را به‌صورت اتمی جایگزین می‌کند و در صورت شکست نوشتن یا جایگزینی، وضعیت نشست را بازمی‌گرداند

Constraints

Example

var
  Info: TPdfIncrementalCommitInfo;
begin
  Pdf.BeginIncrementalSave;
  try
    Pdf.PageNumber := 1;
    Pdf.PageRotation := ro90;
    Pdf.CommitIncrementalSave('revision-1.pdf', Info);
    Pdf.PageRotation := ro180;
    Pdf.CommitIncrementalSave('revision-2.pdf', Info);
  finally
    Pdf.EndIncrementalSave;
  end;
end;

See Also

SaveAs, SaveAsObjectStream