PDFium Delphi Component Docs

الوحدة FPdfCompress

الوحدة: FPdfCompress
إعادة كتابة PDF على مستوى التيار، والضغط، وتطبيع المحتوى، وضبط المحتوى الاختياري، والتعقيم، والوصول إلى مخطط الكائنات، والمراجعات التزايدية، وفحص الإصدار التي يستخدمها مسار حفظ TPdf

الوصف

يحتوي FPdfCompress على مُحوِّلات التيار العامة المستخدمة بعد أن يُسلسل PDFium مستندًا، إضافة إلى سجلات تضبط كل مُحوِّل وتُبلِّغ عن نتيجته

تجسد مساعدات إعادة الكتابة الكاملة مخطط الكائنات النشط، وتحفظ المراجع المتقاطعة أو تعيد بناءها عمدًا، وترفض المدخلات التي لا يمكن إعادة كتابتها بأمان؛ وتعيد الإجراءات القائمة على التقارير الإخفاقات عبر Succeeded و ErrorMessage

تستخدم معظم التطبيقات أساليب الحفظ والفحص ومخطط الكائنات المقابلة في TPdf، بينما تبقى إجراءات الوحدة متاحة للمستدعين الذين يملكون أصلًا تيارات PDF مُسلسلة

الصياغة

TPdfTreeEditor = class
  class function TryLoad(Source: TStream; Kind: TPdfTreeKind;
    const RootReference: TPdfTreeObjectReference;
    const Options: TPdfTreeEditOptions; out Editor: TPdfTreeEditor;
    out Report: TPdfTreeValidationReport): Boolean; static;
  class function Load(Source: TStream; Kind: TPdfTreeKind;
    const RootReference: TPdfTreeObjectReference;
    const Options: TPdfTreeEditOptions): TPdfTreeEditor; static;
  function UpsertName(const Key, RawValue: AnsiString): Boolean;
  function UpsertNumber(Key: Int64; const RawValue: AnsiString): Boolean;
  function RemoveName(const Key: AnsiString): Boolean;
  function RemoveNumber(Key: Int64): Boolean;
  procedure Clear;
  function Validate(out Report: TPdfTreeValidationReport): Boolean;
  function BuildBalancedObjects(out Objects: TPdfTreeSerializedObjects;
    out Report: TPdfTreeValidationReport): Boolean;
  function SaveIncremental(Source, Dest: TStream;
    out Report: TPdfTreeValidationReport): Boolean;
  property Count: Integer;
  property Entries[Index: Integer]: TPdfTreeEntry; default;
end;
TPdfOutlineEditor = class
  class function TryLoad(Source: TStream;
    const Options: TPdfOutlineEditOptions; out Editor: TPdfOutlineEditor;
    out Report: TPdfOutlineValidationReport): Boolean; static;
  class function Load(Source: TStream;
    const Options: TPdfOutlineEditOptions): TPdfOutlineEditor; static;
  function Add(ParentId, SiblingIndex: Integer; const Title: WideString;
    PageNumber: Integer): Integer;
  function Delete(Id: Integer): Boolean;
  function Move(Id, NewParentId, SiblingIndex: Integer): Boolean;
  procedure SetTitle(Id: Integer; const Title: WideString);
  procedure SetStyle(Id: Integer; const Style: TPdfOutlineStyle);
  procedure SetExpanded(Id: Integer; Expanded: Boolean);
  procedure SetColor(Id: Integer; Red, Green, Blue: Single);
  procedure ClearColor(Id: Integer);
  procedure Retarget(Id, PageNumber: Integer;
    const DestinationSuffix: AnsiString = '/Fit';
    DestinationInAction: Boolean = False);
  function ApplyPageMap(const NewPageNumbers: array of Integer;
    DeleteDangling: Boolean; out Report: TPdfOutlineValidationReport): Boolean;
  function Validate(out Report: TPdfOutlineValidationReport): Boolean;
  function SaveIncremental(Source, Dest: TStream;
    out Report: TPdfOutlineValidationReport): Boolean;
  property Count: Integer;
  property Items[Index: Integer]: TPdfOutlineItem; default;
end;
TPdfCrossDocumentGraftMap = class
  constructor Create(const SourceIdentity: AnsiString);
  procedure Clear;
  function TryResolve(const Source: TPdfGraftObjectReference;
    out Destination: TPdfGraftObjectReference): Boolean;
  procedure Add(const Source, Destination: TPdfGraftObjectReference);
  property Count: Integer;
  property Entries[Index: Integer]: TPdfGraftMapEntry; default;
  property SourceIdentity: AnsiString;
end;
TPdfSparseDictionaryReader = class
  constructor Create(Source: TStream);
  function ReadDictionary(ObjectNumber, Generation: Integer;
    out Dictionary: AnsiString): Boolean;
  function ReadLatestDictionary(ObjectNumber: Integer;
    out Generation: Integer; out Dictionary: AnsiString): Boolean;
  function ReadDecodedStream(ObjectNumber, Generation,
    MaximumDecodedBytes: Integer; out Data: TBytes): Boolean;
  property Valid: Boolean;
end;
procedure CompressPdfStream(Source, Dest: TStream);
procedure LinearizePdfStream(Source, Dest: TStream);
procedure PackPdfObjectStreams(Source, Dest: TStream;
  MaxObjectsPerStream: Integer = 100;
  MaxDecodedBytesPerStream: Integer = 65536);
procedure NormalizePdfDocumentContent(Source, Dest: TStream;
  const Options: TPdfContentNormalizeOptions;
  out Report: TPdfContentNormalizeReport);
function GraftPdfAcroForm(Source, Destination, Output: TStream;
  const PageMappings: TPdfGraftPageMappings;
  const Options: TPdfAcroFormGraftOptions;
  GraftMap: TPdfCrossDocumentGraftMap;
  out Report: TPdfAcroFormGraftReport): Boolean;
procedure PruneUnreachablePdfStream(Source, Dest: TStream;
  out Report: TPdfPruneReport);
procedure PruneUnusedPdfResources(Source, Dest: TStream;
  out Report: TPdfResourcePruneReport;
  AllowSignedDocument: Boolean = False);
procedure DeduplicateResourcesPdfStream(Source, Dest: TStream;
  out Report: TPdfDedupReport);
procedure RecompressFlatePdfStream(Source, Dest: TStream;
  const Options: TPdfFlateRecompressOptions;
  out Report: TPdfFlateRecompressReport);
procedure ExternaliseInlineImagesPdfStream(Source, Dest: TStream;
  const Options: TPdfInlineImageExternaliseOptions;
  out Report: TPdfInlineImageExternaliseReport);
procedure ReproduciblePdfStream(Source, Dest: TStream;
  out Report: TPdfReproducibleReport);
procedure AppendPdfDirtyRevision(BaselineState, CurrentState,
  PreviousOutput, Dest: TStream; out ChangedObjectCount: Integer;
  out AppendedByteCount: Int64);
procedure ApplyDefaultOpenAction(Source, Dest: TStream;
  PdfVersion: Integer = 0);
procedure PageLabelledPdfStream(Source, Dest: TStream;
  const Ranges: TPdfPageLabelRanges; ReplaceExisting: Boolean;
  out Report: TPdfPageLabelReport);
procedure InspectOptionalContentPdfStream(Source: TStream;
  Usage: TPdfOptionalContentUsage; ConfigurationIndex: Integer;
  out Inventory: TPdfOptionalContentInventory);
procedure ConfigureOptionalContentPdfStream(Source, Dest: TStream;
  const Changes: TPdfOptionalContentStateChanges;
  const Options: TPdfOptionalContentConfigureOptions;
  out Report: TPdfOptionalContentConfigureReport);
procedure SanitiseActiveContentPdfStream(Source, Dest: TStream;
  const Options: TPdfSanitiseOptions;
  out Report: TPdfSanitiseReport);
procedure SanitiseActiveContentPdfStream(Source, Dest,
  PruneWorkspace: TStream; const Options: TPdfSanitiseOptions;
  out Report: TPdfSanitiseReport);
procedure ExportPdfObjectGraph(Source, Dest: TStream;
  const Options: TPdfObjectGraphInspectOptions;
  out Report: TPdfObjectGraphReport);
procedure PatchPdfObjectGraph(Source, Dest: TStream;
  const Operations: TPdfObjectPatchOperations;
  out Report: TPdfObjectGraphReport;
  AllowSignedDocument: Boolean = False);
procedure PostProcessSavedPdf(Source, Dest: TStream;
  PdfVersion: Integer = 0);
procedure PostProcessSavedPdf(Source, Dest, NormalizedWorkspace,
  RepairedWorkspace, ValidationWorkspace: TStream;
  PdfVersion: Integer = 0);
procedure RepairSubsetToUnicodeCMaps(Source, Dest: TStream);
function ReadPdfVersionInfo(Source: TStream; out Info: TPdfVersionInfo;
  out ErrorText: string): Boolean;
function ReadPdfSparseRevisionInfo(Source: TStream;
  out Info: TPdfSparseRevisionInfo): Boolean;
function ComposePdfSparseUpdateId(Source: TStream;
  const Info: TPdfSparseRevisionInfo;
  const DocumentId, InstanceId: TBytes): AnsiString;
function ReadPdfSparseCatalogSubDict(Source: TStream;
  const Name: AnsiString; out SubDict: AnsiString): Boolean;
function ReadPdfSparsePageDictionaries(Source: TStream;
  out Pages: TPdfSparsePageDictionaries): Boolean;

الدوال والإجراءات

العنصر القابل للاستدعاءالوصف
TPdfTreeEditor.TryLoadيحمّل ويتحقق من شجرة NameTree أو NumberTree غير مباشرة واحدة عبر بحث متفرق بجيل تام، ويعيد أدلة بنائية دون رفع استثناء للإدخال المشوَّه
TPdfTreeEditor.Loadيحمّل شجرة واحدة ويرفع استثناءً مع خطأ التحقق عندما تكون البنية غير آمنة للتحرير
TPdfTreeEditor.UpsertName و UpsertNumberيدرجان إدخالًا مرتبًا واحدًا أو يستبدلانه مع حفظ قيمته الخام الكاملة بصيغة PDF، بما في ذلك المراجع غير المباشرة والكائنات المركبة
TPdfTreeEditor.RemoveName, RemoveNumber, و Clearيزيلون الإدخالات المنتقاة أو يفرغون الشجرة قبل إعادة الموازنة الحتمية
TPdfTreeEditor.Validateيفحص ترتيب المفاتيح والمفاتيح المكررة والقيم الخام وحدود الإدخالات وثوابت المحرِّر الحالية
TPdfTreeEditor.BuildBalancedObjectsيبني عقدًا ورقية وداخلية محدودة بقيم /Limits تامة، ويحفظ هُوية الجذر، ويعيد استخدام مراجع العقد غير المباشرة المحمَّلة المتوافقة كلما أمكن
TPdfTreeEditor.SaveIncrementalيلحق الكائنات الموازَنة كمراجعة تزايدية مُتحقق منها ويعيد تحميل النتيجة بشكل مستقل قبل الإبلاغ عن النجاح
TPdfOutlineEditor.TryLoad و Loadيقرآن تسلسلًا هرميًا للفهرسة عبر بحث متفرق بجيل تام، ويتحققان من روابط الأب والإخوة، ويكشفان الحلقات، ويحفظان الوجهات والإجراءات غير المدعومة كإدخالات قاموس معتمة
TPdfOutlineEditor.Add, Delete, و Moveيحررون أشجار فهرسة فرعية كاملة بمعرِّفات عناصر مستقرة مع صيانة ترتيب الإخوة بالعمق أولًا
TPdfOutlineEditor.SetTitle, SetStyle, SetExpanded, SetColor, و ClearColorيحدّثون عرض الفهرسة المرئي دون إسقاط إدخالات قاموس العنصر غير المميزة
TPdfOutlineEditor.Retargetيعيّن وجهة صفحة صريحة تبدأ من واحد كبيانات /Dest مباشرة أو كإجراء GoTo مع لاحقة وجهة مُتحقق منها
TPdfOutlineEditor.ApplyPageMapيستهلك الخرط الوجهي المبدوء من واحد الناتج عن التحقق من خطة الصفحات، ويحدّث الوجهات الصريحة الباقية، ويزيل الأشجار الفرعية المعلقة أو يُبلِّغ عنها
TPdfOutlineEditor.SaveIncrementalيعيد بناء إدخالات الجذر والأب والإخوة والأبناء والعدد والنمط واللون والوجهات، ويلحق مراجعة تزايدية، ويعيد تحميل النتيجة الدلالية بشكل مستقل قبل النجاح
TPdfCrossDocumentGraftMap.Createيربط خرطات كائنات غير مباشرة من المصدر إلى الوجهة قابلة لإعادة الاستخدام بهُوية مصدر واحدة يزودها المستدعي
TPdfCrossDocumentGraftMap.Add و TryResolveيخزنان ويحلان أزواج رقم كائن وجيل تامة، ويقبلان التكرارات المتطابقة، ويرفضان الوجهات المتضاربة
GraftPdfAcroFormيستورد التسلسلات الهرمية للحقول وعناصر الواجهة والمظاهر وترتيب الحساب والموارد الافتراضية والإجراءات والقيم إلى صفحات الوجهة المُخرَطة، ويلحق مراجعة تزايدية متفرقة، ويعيد تحميل النتيجة بشكل مستقل قبل النجاح
CompressPdfStreamيضغط تيارات غير مضغوطة مؤهلة بـ Flate ويعيد بناء بنية PDF المُسلسلة
LinearizePdfStreamيعيد ترتيب مخطط الكائنات النشط وترقيمه إلى تخطيط PDF مميَّع (linearized) مع بيانات تلميح الصفحة الأولى والكائنات المشتركة
PackPdfObjectStreamsيحزم كائنات غير تيارية مؤهلة في مجموعات ObjStm محدودة ويكتب تيار مراجع متقاطعة؛ ويجب أن يكون حدّا التجميع موجبين معًا
NormalizePdfDocumentContentيطبّع كل تسلسل محتوى صفحات بـ TPdfContentNormalizeOptions ويعيد TPdfContentNormalizeReport على مستوى المستند
PruneUnreachablePdfStreamيعيد كتابة الكائنات القابلة للوصول من الفهرس فقط في مراجعة كلاسيكية واحدة مع حفظ أرقام الكائنات والأجيال الباقية
PruneUnusedPdfResourcesيمسح معامِلات المحتوى المفكوكة في نطاقات موارد الصفحات والموروثة و Form XObject والأنماط والمظاهر والمتداخلة، ويزيل أسماء الموارد غير المستخدمة فقط، ويلحق مراجعة متفرقة، ويقلّص الكائنات التي أصبحت غير قابلة للوصول
DeduplicateResourcesPdfStreamيقلّص الكائنات غير القابلة للوصول ويدمج الأشجار الفرعية المتطابقة بايتيًا من الخطوط والصور و Form XObject
RecompressFlatePdfStreamيفك ترميز التيارات FlateDecode القابلة للوصول ويعيد ضغطها عند تحقق عتبتي التوفير المطلوبتين معًا
ExternaliseInlineImagesPdfStreamينقل كتل الصور المضمّنة إلى XObjects للصور، ويحدّث موارد الصفحات، ويعيد كتابة تيارات المحتوى المتأثرة
ReproduciblePdfStreamينتج مخرجات حتمية بمراجعة واحدة عبر تقليص الكائنات غير القابلة للوصول، وإزالة الطوابع الزمنية من Info، وإسقاط /ID للمصدر
AppendPdfDirtyRevisionيقارن لقطات خط الأساس والدلالية الحالية، ويلحق الكائنات غير المباشرة المتغيرة أو الجديدة إلى المخرجات السابقة، ويُبلِّغ عن عدّادات ما أُلحق
AppendEncryptedPdfDirtyRevisionيلحق الكائنات غير المباشرة المتغيرة أو الجديدة في سياق التعمية الموروث ويتحقق من مصادقة المراجعة أو يجددها
ApplyDefaultOpenActionيحقن إجراء فتح Fit-Height للصفحة الأولى عند غيابه وسماح إصدار PDF المنتقى بذلك، مستخدمًا نوافذ تيار محدودة وبحثًا متفرقًا كاسولًا عبر مراجعات كلاسيكية وتيارات xref ومختلطة وتيارات كائنات
PageLabelledPdfStreamيكتب شجرة أعداد /PageLabels للفهرس من مدى مبدوء من الصفر ويستبدل اختياريًا شجرة موجودة، مستخدمًا نوافذ تيار محدودة وبحثًا متفرقًا في الفهرس على مسار xref العادي
InspectOptionalContentPdfStreamيقرأ مجموعات المحتوى الاختياري والتكوينات والعضويات والبيانات الوصفية للاستخدام والرؤية الفعلية في جرد
ConfigureOptionalContentPdfStreamيطبق رؤية المجموعة المطلوبة على تكوين منتقى ويكتب تحديثات المحتوى الاختياري اللازمة
SanitiseActiveContentPdfStreamيجرّد إدخالات المحتوى النشط المنتقاة من الفهرس والـ trailer عبر بحث متفرق ونسخ مدى محدود، ثم يستطيع تقليص الكائنات التي جعلها تلك الإزالة غير قابلة للوصول؛ ويقبل التحميل الزائد بمساحة العمل تخزينًا محدودًا أو قرصيًا يملكه المستدعي لمُدخل التقليص
ExportPdfObjectGraphيسلسل بيانات كائنات غير مباشرة محدودة كـ JSON بصيغة pdf-object-graph-v1 مع ملخصات SHA-256 اختيارية للتيارات المرمَّزة
PatchPdfObjectGraphيعيّن إدخالات قاموس علوية المستوى أو يزيلها بهُوية الكائن ويلحق مراجعة تزايدية مُتحقق منها
PostProcessSavedPdfيشغّل معالجة إجراء الفتح الافتراضي والتطبيع الخاص بالإصدار وإصلاح تيار xref التزايدي الأصلي؛ ويتيح التحميل الزائد بثلاث مساحات عمل قابلة للبحث ومتمايزة للمستدعين تطبيق سياسة التخزين المحدود أو القرصي الخاصة بهم
RepairSubsetToUnicodeCMapsيعيد كتابة خرائط ToUnicode لخطوط المجموعات الفرعية التي تخالف عناصر مصفوفتها مدخلات bfchar الخاصة بها، باستخدام تعديلات موضعية متساوية الطول على العناصر (قيم bfchar هي الغالبة، والزوج الذي يختلف في البت العلوى فقط يُحل إلى نقطة الكود الأصغر، وأي تعارض آخر يُبقي التعيين الأول)؛ وتمر المستندات دون /ToUnicode أو ذات تخطيطات xref-stream أو hybrid أو object-stream دون تغيير، وكل حفظ TPdf كامل غير تزايدي يطبق الإصلاح نفسه تلقائيًا
ReadPdfVersionInfoيقرأ الترويسة وتجاوز الفهرس وإصدار النواة الفعلي ومعلومات امتدادات Adobe للمطورين
ReadPdfSparseRevisionInfoيقرأ عبر فهرس الكائنات المتفرق معطيات أحدث مراجعة محدودة، وبايتات الفهرس، وأجيال الكائنات، ونمط xref، وحالة التعمية، ومعرِّفات المستند، وأدلة البنية الموسومة
ComposePdfSparseUpdateIdينسّق /ID لـ trailer تزايدي بحفظ المعرفات من المستدعي أو المصدر واشتقاق القيم المفقودة عبر ملخص تيار محدود
ReadPdfSparseCatalogSubDictيقرأ قاموسًا فرعيًا للفهرس مباشرًا أو غير مباشر، مثل MarkInfo أو ViewerPreferences، عبر فهرس الكائنات المتفرق
ReadPdfSparsePageDictionariesيعبر شجرة الصفحات النشطة عبر بحث متفرق كلاسيكي وتيارات xref ومختلط وتيارات كائنات ويعيد قواميس الصفحات بترتيب الصفحات
TPdfSparseDictionaryReader.Createيبني فهرسًا متفرقًا واحدًا قابلًا لإعادة الاستخدام فوق تيار مصدر يملكه المستدعي ويُبلِّغ عن نجاح التهيئة عبر Valid؛ ويجب أن يبقى المصدر حيًا أثناء استخدام القارئ
TPdfSparseDictionaryReader.Destroyيحرر مخازن الفهرس المحتجزة دون تحرير تيار المصدر المملوك للمستدعي
TPdfSparseDictionaryReader.ReadDictionaryيحل رقم كائن وجيل تامين عبر الفهرس المحتجز ويعيد بايتات القاموس النشط المحدودة
TPdfSparseDictionaryReader.ReadLatestDictionaryيحل إدخال xref النشط لرقم كائن، ويعيد جيله، ويقرأ قاموسه عبر الفهرس المحتجز
TPdfSparseDictionaryReader.ReadDecodedStreamيقرأ ويفك ترميز تيار مباشر واحد غير مُرشَّح أو بـ FlateDecode واحد مع فرض MaximumDecodedBytes
TPdfOptionalContentConfigureOptions.Defaultينتقي التكوين 0 واستخدام View، ويزيل قواعد الحالة التلقائية، ويفضّ مجموعات الاختيار الواحد (radio groups)
TPdfSanitiseOptions.Defaultيُمكِّن إزالة إجراء الفتح وإجراءات الفهرس وأشجار الأسماء والملفات المترابطة والكائنات غير القابلة للوصول مع حفظ AcroForm والبيانات الوصفية
TPdfObjectGraphInspectOptions.Defaultيعيد حدود 100000 كائن وعمق 32 ومخرجات 64 MiB وسلاسل 1 MiB وملخصات تيارات مُمكَّنة

الأنواع

النوعالوصف
TPdfTreeKindينتقي NameTree مرتبة بالبايتات مع ptkName أو NumberTree بإشارة بعرض 64 بت مع ptkNumber
TPdfTreeObjectReferenceيعرِّف عقدة شجرة غير مباشرة واحدة بـ ObjectNumber و Generation
TPdfTreeEntryيخزن NameKey أو NumberKey مع كائن PDF كامل مُطبَّع واحد في RawValue؛ و TPdfTreeEntries هي مصفوفته الديناميكية
TPdfTreeEditOptionsيحد MaxEntries و MaxNodes و MaxDepth و MaxLeafEntries و MaxKidsPerNode؛ ويزوِّد Default حدود إنتاج محافظة
TPdfTreeValidationIssueمشكلة واحدة تحمل أدلة كائن و Message تشخيصية؛ و TPdfTreeValidationIssues هي مصفوفتها الديناميكية
TPdfTreeValidationIssueKindقيم المشكلات ptviInvalidRoot و ptviUnreadableNode و ptviCycle و ptviDepthLimit و ptviNodeLimit و ptviEntryLimit و ptviInvalidNodeShape و ptviInvalidKey و ptviInvalidValue و ptviInvalidLimits و ptviDuplicateKey و ptviUnsortedKey و ptviDeadlineExceeded
TPdfTreeValidationReportيُبلِّغ عن NodeCount و EntryCount و MaximumDepth و Issues وأدلة الكائن وحالة النجاح ونص الخطأ
TPdfTreeSerializedObjectيحتوي مرجع عقدة موازَنة واحدًا، وبيانات كائن غير مباشر كاملة، وعلامة ما إذا أُعيد استخدام المرجع
TPdfTreeEditorنموذج شجرة مرتبة قابل للتغيير يحفظ قيم PDF المعتمة ويصدر تسلسلًا هرميًا غير مباشر موازَنًا
TPdfOutlineStyleFlagقيم عرض posItalic و posBold؛ و TPdfOutlineStyle هي مجموعتهما
TPdfOutlineObjectReferenceيعرِّف كائن فهرسة محتجزًا برقم كائن وجيل
TPdfOutlineItemيخزن هُوية مستقرة، وهُوية أبًا، وعنوانًا، ووجهة صريحة، وصيغة إجراء، و IsOpen، ونمطًا، و HasColor و ColorRed و ColorGreen و ColorBlue، ومرجع كائن محتجزًا؛ و TPdfOutlineItems هي مصفوفته الديناميكية
TPdfOutlineEditOptionsيحد MaxItems وعمق التسلسل الهرمي، بقيم افتراضية محافظة يزوِّدها Default
TPdfOutlineValidationIssueKindقيم المشكلات poviNone و poviInvalidCatalog و poviUnreadableItem و poviCycle و poviDepthLimit و poviItemLimit و poviInvalidParent و poviInvalidSibling و poviMissingTitle و poviInvalidDestination و poviInvalidPageMap و poviEncryptedInput و poviWriteFailure و poviVerificationFailure
TPdfOutlineValidationReportيُبلِّغ عن IssueKind وأدلة الكائن و ItemCount و MaximumDepth و RemappedDestinationCount و RemovedDanglingItemCount وحالة النجاح ونص الخطأ
TPdfOutlineEditorنموذج فهرسة بالعمق أولًا قابل للتغيير مع إعادة خرطة مُتحقق منها لخطة الصفحات واستمرارية تزايدية
TPdfGraftObjectReferenceيعرِّف كائنًا غير مباشر واحدًا كمصدر أو وجهة برقم كائن وجيل تامين
TPdfCrossDocumentGraftMapخرطة كائنات مرتبطة بهُوية مصدر قابلة لإعادة الاستخدام مدعومة بـ TPdfGraftMapEntries تحفظ الحلقات والمراجع المشتركة وترجع عن الإدخالات التي أضافها خرط فاشل
TPdfGraftPageMappingيُخرِط SourcePageNumber المبدوء من واحد إلى DestinationPageNumber المبدوء من واحد من أجل تحديثات /P لعناصر الواجهة و /Annots للصفحات
TPdfAcroFormCollisionPolicyينتقي pagcpReject أو pagcpRename عندما يتصادم عنوان حقل جذري مصدري مع عنوان حقل جذري وجهي
TPdfAcroFormGraftOptionsيتحكم في CollisionPolicy و RenamePrefix وميزانيات الكائنات والاستدعاء الذاتي و AllowSignedDestination
TPdfAcroFormGraftReportيُبلِّغ عن SourceFieldCount و GraftedFieldCount و ReusedObjectCount و DestinationFieldCount و MappedPageCount و GraftedObjectCount و RenamedFieldCount وحجم المخرجات وحالة النجاح ونص الخطأ
TPdfVersionInfoتقرير إصدار مع HeaderVersion و CatalogVersion و CoreVersion و AdobeBaseVersion و AdobeExtensionLevel و HasCatalogVersion و HasDeveloperExtensions و HasAdobeExtension
TPdfSparseRevisionInfoلقطة أحدث مراجعة مع RootObjectNumber و RootGeneration و InfoObjectNumber و InfoGeneration و SizeValue و MaximumObjectNumber و PreviousXrefOffset و UsesXrefStream و HasEncrypt و HasDocumentId و HasTaggedStructure و FirstDocumentId و CatalogDictionary و InfoDictionary
TPdfSparseUpdateObjectإدخال مراجعة واحد بـ ObjectNumber و Generation وجسم Data كامل يحمل بايتات N G obj ... endobj
TPdfSparseUpdateObjectsمصفوفة ديناميكية من إدخالات TPdfSparseUpdateObject تُلحقها AppendPdfSparseUpdate
TPdfSparsePageDictionaryكائن صفحة نشط واحد بـ ObjectNumber و Generation وبايتات Dictionary محدودة
TPdfSparsePageDictionariesمصفوفة ديناميكية من قواميس الصفحات النشطة بترتيب شجرة الصفحات
TPdfSparseDictionaryReaderمالك قابل لإعادة الاستخدام لفهرس متفرق كلاسيكي وتيارات xref ومختلط وتيارات كائنات من أجل بحث قواميس متكرر بجيل تام دون حجز بحجم المصدر
TPdfPruneReportنتيجة قابلية وصول مع SourceByteCount و OutputByteCount و KeptObjectCount و PrunedObjectCount و Succeeded و ErrorMessage
TPdfResourcePruneReportنتيجة تقليص الموارد مع ScannedScopeCount و UpdatedScopeCount و RemovedNameCount و RemovedObjectCount وعدّادات التيارات ومجاميع البايتات وحالة النجاح ونص الخطأ
TPdfDedupReportنتيجة إزالة الازدواج مع SourceByteCount و OutputByteCount و KeptObjectCount و PrunedObjectCount و MergedFontCount و MergedImageCount و MergedFormXObjectCount و Succeeded و ErrorMessage
TPdfFlateRecompressOptionsعتبتا استبدال MinSavingBytes و MinSavingRatio
TPdfFlateRecompressReportنتيجة إعادة ضغط مع SourceByteCount و OutputByteCount و RecompressedCount و SkippedCount و FailedCount و OriginalStreamBytes و RecompressedStreamBytes و Succeeded و ErrorMessage
TPdfInlineImageExternaliseOptionsيحتوي SkipUnsafePages التي تحفظ الصفحات التي لا يمكن حل حدود صورها المضمّنة
TPdfInlineImageExternaliseReportنتيجة تخريج مع SourceByteCount و OutputByteCount و ExternalisedCount و SkippedPageCount و FailedCount و CreatedXObjectCount و Succeeded و ErrorMessage
TPdfReproducibleReportنتيجة إعادة كتابة حتمية مع SourceByteCount و OutputByteCount و KeptObjectCount و PrunedObjectCount و StrippedTimestampCount و Succeeded و ErrorMessage
TPdfPageLabelStyleأنماط ترقيم plsNone و plsDecimal و plsUppercaseRoman و plsLowercaseRoman و plsUppercaseLetters و plsLowercaseLetters
TPdfPageLabelRangeمدى وسوم واحد بـ StartPageIndex المبدوء من الصفر و Style و Prefix و StartNumber
TPdfPageLabelRangesمصفوفة ديناميكية من قيم TPdfPageLabelRange
TPdfPageLabelReportنتيجة إعادة كتابة الوسوم مع SourceByteCount و OutputByteCount و AppliedRangeCount و ReplacedExistingLabels و Succeeded و ErrorMessage
TPdfOptionalContentUsageسياقات الرؤية ocuView و ocuPrint و ocuExport و ocuDesign
TPdfOptionalContentStateحالات لكل استخدام ocsUnspecified و ocsOn و ocsOff
TPdfOptionalContentBaseStateحالات أساس التكوين ocbsOn و ocbsOff و ocbsUnchanged
TPdfOptionalContentMembershipPolicyسياسات العضوية ocmpAnyOn و ocmpAllOn و ocmpAnyOff و ocmpAllOff و ocmpUnknown
TPdfOptionalContentIntegerArrayمصفوفة أعداد صحيحة ديناميكية تستخدم لتجميعات أرقام كائنات المحتوى الاختياري
TPdfOptionalContentStringArrayمصفوفة AnsiString ديناميكية تستخدم لتجميعات أسماء PDF
TPdfOptionalContentWideStringArrayمصفوفة WideString ديناميكية تستخدم لنص المحتوى الاختياري المفكوك
TPdfOptionalContentRadioGroupمجموعة استبعاد متبادل واحدة تمثلها GroupObjectNumbers
TPdfOptionalContentRadioGroupsمصفوفة ديناميكية من قيم TPdfOptionalContentRadioGroup
TPdfOptionalContentGroupسجل OCG مع ObjectNumber و Generation و Name و Intents و ViewState و PrintState و ExportState و PageElementSubtype و Language و LanguagePreferred و UserType و UserNames و HasZoomRange و MinimumZoom و MaximumZoom و EffectiveVisible و Locked و RadioGroupIndex
TPdfOptionalContentGroupsمصفوفة ديناميكية من قيم TPdfOptionalContentGroup
TPdfOptionalContentConfigurationسجل تكوين مع ObjectNumber و Generation و Name و Creator و BaseState و Intents و OnGroupObjectNumbers و OffGroupObjectNumbers و LockedGroupObjectNumbers و OrderGroupObjectNumbers و RadioGroups و HasAutomaticState
TPdfOptionalContentConfigurationsمصفوفة ديناميكية من قيم TPdfOptionalContentConfiguration
TPdfOptionalContentMembershipسجل OCMD مع ObjectNumber و Generation و GroupObjectNumbers و Policy و VisibilityExpression و EffectiveVisible
TPdfOptionalContentMembershipsمصفوفة ديناميكية من قيم TPdfOptionalContentMembership
TPdfOptionalContentInventoryنتيجة فحص مع Usage و SelectedConfigurationIndex و Groups و Configurations و Memberships و Succeeded و ErrorMessage
TPdfOptionalContentStateChangeحالة Visible مطلوبة لـ GroupObjectNumber واحد
TPdfOptionalContentStateChangesمصفوفة ديناميكية من قيم TPdfOptionalContentStateChange
TPdfOptionalContentConfigureOptionsالتكوين والاستخدام المنتقيان مع تحكمي DisableAutomaticState و EnforceRadioGroups
TPdfOptionalContentConfigureReportنتيجة ضبط مع SourceByteCount و OutputByteCount و GroupCount و ChangedGroupCount و UpdatedUsageStateCount و SelectedConfigurationIndex و RemovedAutomaticState و Succeeded و ErrorMessage
TPdfSanitiseOptionsتحكمات مستقلة StripOpenAction و StripCatalogActions و StripNames و StripAssociatedFiles و StripAcroForm و StripMetadata و RemoveUnreachable
TPdfSanitiseReportنتيجة تعقيم مع SourceByteCount و OutputByteCount و StrippedEntryCount و PrunedObjectCount و PruneReport المتداخلة و Succeeded و ErrorMessage
TPdfObjectGraphInspectOptionsيحد تصدير JSON بـ MaxObjects و MaxDepth و MaxOutputBytes و MaxStringBytes و IncludeStreamDigests
TPdfObjectGraphReportنتيجة تصدير وترقيع مشتركة مع SourceByteCount و OutputByteCount و ObjectCount و ExportedObjectCount و PatchedObjectCount و AppliedOperationCount و Truncated و Succeeded و ErrorMessage
TPdfObjectPatchOperationKindإجراءا ترقيع popSet و popRemove
TPdfObjectPatchValueKindأنواع القيم povNull و povBoolean و povInteger و povReal و povName و povTextString و povReference
TPdfObjectPatchValueقيمة موسومة بـ Kind و BooleanValue و IntegerValue و RealValue و TextValue و ReferenceObjectNumber و ReferenceGeneration
TPdfObjectPatchOperationعملية واحدة بـ Kind و ObjectNumber و Generation و Key و Value
TPdfObjectPatchOperationsمصفوفة ديناميكية من قيم TPdfObjectPatchOperation

السلامة والحدود

تستبدل TPdfOutlineEditor.SetUri الوجهة بإجراء URI UTF-8 وترمز الفواصل الحرفية بأمان؛ تتجاهل مراجعة الحفظ حالة فتح العناصر الورقية لأن PDF لا يسجل Count للفروع فيها

يدعم overload الخيارات لـ GraftPdfAcroForm ‏pagcpReject و pagcpRename و pagcpNamespace وجمع حقول النص والاختيار النهائية المتوافقة مع تصفية widgets وعزل الموارد والمظاهر وترتيب الحساب؛ راجع FPdfFormMerge للسياسات والتكامل داخل المعاملة

تقارير تعارض AcroForm

تسمي TPdfAcroFormGraftOptions.NamespacePrefix الأب المضاف بسياسة namespace؛ تجمع TPdfAcroFormCollisionPolicy.pagcpMergeCompatible الحقول النهائية المتوافقة المدعومة

تعد TPdfAcroFormGraftReport.FilteredFieldCount و TPdfAcroFormGraftReport.FilteredWidgetCount العناصر المحذوفة باختيار الصفحات؛ تعد TPdfAcroFormGraftReport.ResourceRenameCount أسماء الموارد المعزولة و TPdfAcroFormGraftReport.MergedFieldCount الحقول المضمومة إلى مالك موجود

تلتقط CapturePdfNavigation و WritePdfNavigation الوجهات المسماة وروابط الصفحات وتعيد توجيهها بخريطة صفحات مالكة صريحة؛ راجع FPdfMerge لدلالات المفاتيح الخام ومعاملات الوجهات والحدود والمعاملات

سجلات التقاط التنقل

TPdfNavigationNamedDestination= record
    // Keep the original PDF string bytes, including a UTF-16 BOM when present
    NameKey: AnsiString;
    // Absolute one-based page number; zero denotes an unresolved target
    PageNumber: Integer;
    // Exact destination mode and parameters, including null values
    DestinationSuffix: AnsiString;
  end;
  TPdfNavigationNamedDestinations= array of TPdfNavigationNamedDestination;
  TPdfNavigationPageLink= record
    // Owner page is one-based; annotation and link-only ordinals are zero-based
    PageNumber, AnnotationIndex, LinkIndex: Integer;
    HasDestination, HasGotoAction: Boolean;
    DestinationPageNumber, ActionPageNumber: Integer;
    DestinationSuffix, ActionSuffix: AnsiString;
  end;
  TPdfNavigationPageLinks= array of TPdfNavigationPageLink;

قراءة قيم الكائنات النشطة

تعيد ReadPdfActiveObjects أحدث القيم النشطة بأرقام جيلها الدقيقة ومراجعة الكتالوج النشطة، وتحل جداول xref التقليدية وتدفقاتها والمراجعات التزايدية وأعضاء تدفقات الكائنات المضغوطة

تستبعد Body رأس الكائن غير المباشر و endobj؛ تحفظ التدفقات العادية القاموس والحمولة المرمزة، وتُجسد الأعضاء المضغوطة كقيم عادية، ولا تُعاد بنية xref وتدفقات الكائنات

تُستعاد موضعية المصدر؛ يعيد الفشل مجموعة فارغة مع تشخيصات؛ تُرفض المدخلات المشفرة ويمكن فحص التوقيعات دون تغيير بايتاتها

الافتراضات 256 MiB للمصدر و 64 MiB لكل جسم و 256 MiB للأجسام إجمالًا و 64 MiB لكل تدفق كائن مفكوك و 256 MiB لذاكرات التدفقات إجمالًا و 1,000,000 خانة رقم كائن

تُفحص حدود الجسم قبل كل نسخ وتحتسب أجسام البنية المؤقتة والقيم المعادة؛ توقف حدود cache المفكوكة المستقلة فك التدفقات قبل تجاوز الميزانية

هذه حدود مخازن منطقية لا سقف ذاكرة العملية؛ تحتاج نسخ المصدر وتحضير الكائنات ومخازن الفحص وذاكرة المفكك والبيانات الوصفية إلى تخصيصات إضافية محدودة، وقد تكرر مخازن الفحص الأجسام المحفوظة

type
  TPdfActiveObject = record
    ObjectNumber, Generation: Integer;
    Body: TBytes;
  end;
  TPdfActiveObjects = array of TPdfActiveObject;
  TPdfActiveObjectReadOptions = record
    MaxSourceBytes, MaxObjectBytes, MaxTotalObjectBytes: Int64;
    MaxDecodedObjectStreamBytes, MaxTotalDecodedObjectStreamBytes: Int64;
    MaxObjects: Integer;
    class function Default: TPdfActiveObjectReadOptions; static;
  end;

function ReadPdfActiveObjects(Source: TStream;
  const Options: TPdfActiveObjectReadOptions; out Objects: TPdfActiveObjects;
  out Revision: TPdfSparseRevisionInfo; out ErrorText: string): Boolean;

انظر أيضًا

FPdfContentNormalize, TPdf.SaveAs, TPdf.SaveAsNormalizedContent, TPdf.InspectOptionalContent, TPdf.ObjectGraph, ReadPdfVersionInfo