PDFium Delphi Component Docs

Транзакционное слияние AcroForm

Подключите FPdfFormMerge, чтобы включить MergePdfFilesWithForms или TPdfFormMergeHelper.MergeFilesWithForms

Помощник подготавливает импорт выбранных страниц и прививку полей, удаляет осиротевшие импортированные виджеты и независимо переоткрывает сохранённый результат перед заменой документа вызывающего; при ошибке и отмене целевой документ сохраняется

pagcpReject отклоняет дубликат полностью квалифицированного имени поля, pagcpRename добавляет детерминированный свободный от коллизий префикс и суффикс, а pagcpNamespace вставляет реальное родительское поле, изолируя каждый источник

pagcpMergeCompatible объединяет совместимые конечные текстовые поля или списки, чтобы их виджеты делили одно значение; требуются равные флаги, значения, значения по умолчанию, опции и самодостаточная семантика шрифтов, а действия полей, форматированный текст и несовместимые типы полей отклоняются

Фильтрация выбранных страниц отсекает неиспользуемые виджеты и поля и сохраняет отфильтрованный, очищенный от дубликатов порядок вычислений; ресурсы по умолчанию изолируются, а имена внешнего вида по умолчанию переписываются, при этом клонированные потоки отображения сохраняют собственные ресурсы

Объединяемые поля и виджеты нормализуются до соединения совместимых полей; независимые имена остаются независимо редактируемыми после сохранения и повторного открытия

InsertAt — индекс вставки от нуля; -1 добавляет страницы в конец; лимиты по умолчанию — 10 000 страниц суммарно и 256 МиБ на документ, лимиты прививки — 100 000 объектов и глубина 128

Жёсткие лимиты прививки: 1 000 000 объектов, глубина 256 и 4 096 корневых полей; отклоняются повторные выбранные страницы, источники и целевые документы XFA, подписанные источники и цели, а также шифрованные целевые документы

Пароли источников могут расшифровать источник для подготовленного слияния; результат не шифруется, поэтому при необходимости примените явный рабочий процесс шифрования после него

Устаревшая перегрузка GraftPdfAcroForm сохраняет политику отклонения; перегрузка, принимающая TPdfAcroFormGraftOptions, открывает те же политики коллизий и ресурсов на уровне потоков

Этот помощник форм не сохраняет исходные оглавления и именованные назначения; для заявленного рабочего процесса навигации используйте помощник навигации

Options := TPdfFormMergeOptions.Default;
Options.GraftOptions.CollisionPolicy := pagcpNamespace;
if not MergePdfFilesWithForms(Pdf, Sources, Options, Report) then
  raise EPdfError.Create(Report.ErrorMessage);

Публичные объявления

type
  TPdfFormMergeOptions= record
    GraftOptions: TPdfAcroFormGraftOptions;
    InsertAt: Integer;
    MaxPages: Integer;
    MaxDocumentBytes: Int64;
    CancellationToken: IPdfCancellationToken;
    class function Default: TPdfFormMergeOptions; static;
  end;
  TPdfFormMergeReport= record
    Succeeded, Cancelled: Boolean;
    ImportedSourceCount, ImportedPageCount: Integer;
    GraftedFieldCount, RenamedFieldCount, MergedFieldCount: Integer;
    FilteredFieldCount, FilteredWidgetCount, ResourceRenameCount: Integer;
    ErrorMessage: string;
  end;

function MergePdfFilesWithForms(Destination: TPdf;
  const Sources: TPdfBatchMergeSources; const Options: TPdfFormMergeOptions;
  out Report: TPdfFormMergeReport): Boolean;

type
  TPdfFormMergeHelper= class helper for TPdf
    function MergeFilesWithForms(const Sources: TPdfBatchMergeSources;
      const Options: TPdfFormMergeOptions;
      out Report: TPdfFormMergeReport): Boolean;
  end;