TPdfUaSaveOptions.PdfUa2function SaveAsPdfUa(const FileName: string): Boolean; overload;
function SaveAsPdfUa(const FileName: string; const Options: TPdfUaSaveOptions): Boolean; overload;
SaveAsPdfUa сначала выполняет обычный SaveAs, а затем наслаивает поверх сохранённых байтов инкрементное обновление, повышающее файл до документа PDF/UA-1 или PDF/UA-2. Постобработка внедряет в сохранённый поток четыре класса маркеров:
pdfuaid:part = 1) плюс соответствующее описание pdfaExtension:schemas, обязательную запись dc:title (ISO 14289-1 §7.1) и перенесённые поля информационного словаря (Author, Subject, Producer, Keywords, CreationDate, ModDate и др.)/MarkInfo << /Marked true /Suspects false >>, если в исходном каталоге нет записи /MarkInfo (§7.1)/ViewerPreferences << /DisplayDocTitle true >>, если в исходном документе нет записи /ViewerPreferences (§7.1)/Lang (xx), если в исходном документе нет /Lang и Options.Language передаёт тег BCP 47 (§7.2). В trailer также добавляется массив /ID (повторно используется значение из FPDF_GetFileIdentifier, если оно доступно, иначе выводится детерминированно из исходных байтов)Вывод побайтово совпадает с результатом базового SaveAs до конца исходного PDF;
добавляется только инкрементное обновление. Существующие программы чтения, не понимающие PDF/UA, по-прежнему отображают файл
точно так же, как это сделал бы обычный SaveAs. Две перегрузки различаются только
способом передачи конфигурации: форма только с именем файла использует
TPdfUaSaveOptions.Default с автоматическим заполнением из
FPDF_GetMetaText / FPDF_GetFileIdentifier /
FPDFCatalog_GetLanguage, тогда как форма
TPdfUaSaveOptions позволяет вызывающему коду переопределить Title,
Author, Subject, Keywords, Creator, Producer, CreationDate, ModDate,
Language, DocumentId, InstanceId, а также идентификаторы pdfuaid Part, Revision,
Amd и Corr
TPdfUaSaveOptions.PdfUa2 выбирает Part 2, подставляет стандартное значение
pdfuaid:rev 2024 и записывает в каталог
/Version /2.0, поэтому у источника PDF 1.x с инкрементным обновлением
действующей версией становится PDF 2.0
Возвращает True при успехе. Возвращает False, если
базовый SaveAs завершился неудачей или если инкрементное обновление не удалось
присоединить (PDF слишком короткий, недопустимый trailer, зашифрованный источник)
SaveAs(..., saRemoveSecurity)
// Simple PDF/UA-1 output, options auto-populated from the document
if Pdf1.SaveAsPdfUa('C:\Report.pdfua.pdf') then
ShowMessage('Saved PDF/UA-1');
// With explicit options (Title overridden, language explicit)
var
Opts: TPdfUaSaveOptions;
begin
Opts := TPdfUaSaveOptions.Default;
Opts.DocumentTitle := 'Quarterly Report Q3 2026';
Opts.Language := 'en-US';
Pdf1.SaveAsPdfUa('C:\Report.q3.pdfua.pdf', Opts);
// PDF/UA-2 output based on ISO 32000-2
Opts := TPdfUaSaveOptions.PdfUa2;
Opts.DocumentTitle := 'Accessible PDF 2.0 report';
Opts.Language := 'en-US';
Pdf1.SaveAsPdfUa('C:\Report.pdfua2.pdf', Opts);
end;