Подключите 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;