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;
| Callable | Description |
|---|---|
TPdfTreeEditor.TryLoad | Загружает и проверяет одно косвенное дерево имён или чисел через разреженный поиск по точному поколению, возвращая структурные свидетельства без возбуждения исключений для некорректного ввода |
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 с данными подсказок первой страницы и общих объектов |
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-stream, гибридным и object-stream ревизиям |
PageLabelledPdfStream | Записывает числовое дерево /PageLabels в каталоге из диапазонов с нумерацией с нуля и при необходимости заменяет существующее дерево, используя ограниченные окна потоков и разреженный поиск по каталогу на обычном пути xref |
InspectOptionalContentPdfStream | Читает группы optional content, конфигурации, членства, метаданные использования и итоговую видимость в опись |
ConfigureOptionalContentPdfStream | Применяет запрошенную видимость групп к выбранной конфигурации и записывает требуемые обновления optional content |
SanitiseActiveContentPdfStream | Удаляет выбранные записи активного содержимого из каталога и trailer через разреженный поиск и ограниченное копирование диапазонов, затем может отсечь ставшие недостижимыми объекты; перегрузка с рабочим хранилищем принимает ограниченное или дисковое хранилище вызывающего кода для входа отсечения |
ExportPdfObjectGraph | Сериализует ограниченные данные косвенных объектов в JSON pdf-object-graph-v1 с необязательными дайджестами SHA-256 закодированных потоков |
PatchPdfObjectGraph | Устанавливает или удаляет записи верхнего уровня словаря по идентичности объекта и дописывает проверенную инкрементную ревизию |
PostProcessSavedPdf | Выполняет обработку действия открытия по умолчанию, нормализацию с учётом версии и нативное восстановление инкрементного xref-stream; перегрузка с тремя различными перемещаемыми рабочими хранилищами позволяет вызывающему коду применить собственную политику ограниченного или дискового хранения |
RepairSubsetToUnicodeCMaps | Переписывает ToUnicode CMap subset-шрифтов, элементы массива которых противоречат их записям bfchar, используя равные по длине правки элементов на месте (побеждают значения bfchar, пара, различающаяся только старшим битом, сводится к меньшему code point, любой другой конфликт сохраняет первое отображение); документы без /ToUnicode и с раскладками xref-stream, гибридными или object-stream проходят без изменений, и каждое полное неинкрементное сохранение TPdf применяет ту же починку автоматически |
ReadPdfVersionInfo | Читает версию заголовка, переопределение в каталоге, действующую базовую версию и сведения о расширении разработчика Adobe |
ReadPdfSparseRevisionInfo | Читает через разреженный индекс объектов ограниченные сведения о последней ревизии, байты каталога, поколения объектов, стиль xref, состояние шифрования, идентификаторы документа и свидетельства tagged-структуры |
ComposePdfSparseUpdateId | Форматирует /ID инкрементного trailer, сохраняя идентификаторы вызывающего кода или источника и вычисляя отсутствующие значения через ограниченный потоковый дайджест |
ReadPdfSparseCatalogSubDict | Читает прямой или косвенный подсловарь каталога, например MarkInfo или ViewerPreferences, через разреженный индекс объектов |
ReadPdfSparsePageDictionaries | Обходит активное дерево страниц через разреженный поиск по классическим, xref-stream, гибридным и object-stream ревизиям и возвращает словари страниц в порядке страниц |
TPdfSparseDictionaryReader.Create | Строит многоразовый разреженный индекс над исходным потоком, принадлежащим вызывающему коду, и сообщает об успешной инициализации через Valid; источник должен оставаться живым, пока используется читатель |
TPdfSparseDictionaryReader.Destroy | Освобождает удержанные буферы индекса, не освобождая исходный поток вызывающего кода |
TPdfSparseDictionaryReader.ReadDictionary | Разрешает точную пару номера объекта и поколения через удержанный индекс и возвращает ограниченные байты активного словаря |
TPdfSparseDictionaryReader.ReadLatestDictionary | Разрешает активную запись xref для номера объекта, возвращает её поколение и читает её словарь через удержанный индекс |
TPdfSparseDictionaryReader.ReadDecodedStream | Читает и декодирует один прямой нефильтрованный или одиночный поток FlateDecode, соблюдая MaximumDecodedBytes |
TPdfOptionalContentConfigureOptions.Default | Выбирает конфигурацию 0 и использование View, удаляет правила автоматических состояний и навязывает радиогруппы |
TPdfSanitiseOptions.Default | Включает удаление действий открытия, действий каталога, деревьев имён, связанных файлов и недостижимых объектов, сохраняя AcroForm и метаданные |
TPdfObjectGraphInspectOptions.Default | Возвращает лимиты 100000 объектов, глубину 32, вывод 64 МиБ, строки 1 МиБ и включённые дайджесты потоков |
| Type | Description |
|---|---|
TPdfTreeKind | Выбирает отсортированное по байтам дерево имён с ptkName или знаковое 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-stream, гибридных и object-stream ревизий для повторного поиска словарей по точному поколению без выделения памяти под весь источник |
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 | Динамический массив целых чисел для коллекций номеров объектов optional content |
TPdfOptionalContentStringArray | Динамический массив AnsiString для коллекций имён PDF |
TPdfOptionalContentWideStringArray | Динамический массив WideString для декодированного текста optional content |
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 |
TPdfTreeEditor, TPdfOutlineEditor и GraftPdfAcroForm отклоняют зашифрованный ввод, потому что их автономные сериализаторы не наследуют параметры безопасности документа, а все исходные и целевые потоки должны оставаться перемещаемыми во время проверенного сохраненияGraftPdfAcroForm отклоняет XFA, висящие ссылки, несопоставленные страницы виджетов, дубликаты сопоставлений страниц и конфликты ресурсов по умолчанию; подписанные назначения требуют явного разрешенияTPdf более высокого уровня предоставляют явное разрешение там, где подписанный ввод может быть принятPatchPdfObjectGraph отказывает при дубликатах операций, отсутствующих объектах, некорректных или дублирующихся ключах словаря, защищённых ключах фильтра и длины потоков и отсутствующих целях ссылокAppendPdfDirtyRevision требует совпадающих ссылок на каталог в базовом снимке и предыдущем выводе и не может закодировать освобождённый косвенный объектSanitiseActiveContentPdfStream с рабочими хранилищами требует трёх различных перемещаемых потоков при RemoveUnreachable=TrueTPdfOutlineEditor.SetUri заменяет пункт назначения действием URI в UTF-8 и безопасно кодирует литеральные разделители; проверка сохранения игнорирует раскрытое состояние у листовых элементов, поскольку PDF не указывает для них Count ветви
Перегрузка GraftPdfAcroForm с параметрами поддерживает pagcpReject, pagcpRename, pagcpNamespace и совместимое объединение терминальных текстовых полей и полей выбора с отбрасыванием невыбранных виджетов, изолированными ресурсами, внешним видом и порядком вычислений; о политиках и транзакционной интеграции в документ см FPdfFormMerge
TPdfAcroFormGraftOptions.NamespacePrefix задаёт имя родителя, вставляемого политикой пространства имён; 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, потоки xref, инкрементальные ревизии и сжатые элементы объектных потоков
Body исключает заголовок косвенного объекта и маркер endobj; обычные потоки сохраняют свой словарь и закодированное содержимое, а сжатые элементы материализуются как обычные значения, при этом инфраструктура xref и объектных потоков исключается из возвращаемой коллекции
Позиция источника восстанавливается, а при сбое возвращается пустая коллекция объектов с диагностикой; зашифрованный ввод отклоняется, а подписи можно исследовать, не изменяя их байты
Значения по умолчанию допускают 256 МиБ исходных байтов, 64 МиБ на материализованное тело, 256 МиБ суммарно по телам, 64 МиБ на декодированный объектный поток, 256 МиБ суммарно по кэшам декодированных объектных потоков и 1 000 000 слотов номеров объектов
Лимиты тел проверяются перед каждым копированием тела и учитывают как возвращаемые значения, так и временные инфраструктурные тела; независимо заданные лимиты кэша декодирования останавливают декодирование объектных потоков до превышения бюджета вызывающего
Это логические лимиты буферов, а не общепроцессный предел памяти: копии источника, промежуточный поток прямых объектов, буферы сканирования, рабочая память декодера и метаданные объектов потребляют дополнительные ограниченные выделения, а буферы сканирования могут дублировать сохраняемые тела
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;