TPdfUaSaveOptions.PdfUa2로 구성하면 PDF/UA-2로 저장합니다function SaveAsPdfUa(const FileName: string): Boolean; overload;
function SaveAsPdfUa(const FileName: string; const Options: TPdfUaSaveOptions): Boolean; overload;
SaveAsPdfUa는 먼저 일반 SaveAs를 수행한 뒤, 저장된 바이트 위에 파일을 PDF/UA-1 아카이브로 승격시키는 증분 업데이트를 얹습니다(ISO 14289-1:2014). 이 후처리는 저장된 스트림에 네 부류의 마커를 주입합니다
pdfuaid:part = 1) 맞는 pdfaExtension:schemas 기술과 필수 dc:title 항목(ISO 14289-1 §7.1), 브리지된 Info 딕셔너리 필드(Author, Subject, Producer, Keywords, CreationDate, ModDate 등)를 담는 XMP 메타데이터 스트림/MarkInfo << /Marked true /Suspects false >> (§7.1)/ViewerPreferences << /DisplayDocTitle true >> (§7.1)Options.Language가 BCP 47 태그를 제공할 때의 catalog /Lang (xx) (§7.2). trailer에도 /ID 배열이 붙습니다(가능하면 FPDF_GetFileIdentifier에서 재사용하고, 아니면 소스 바이트에서 결정론적으로 유도)출력은 원본 PDF 끝까지 기본 SaveAs 결과와 바이트 단위로 동일합니다. 뒤에 붙는 것은 증분 업데이트뿐입니다
PDF/UA를 이해하지 못하는 기존 리더도 일반 SaveAs와 똑같이 파일을
렌더링합니다. 두 오버로드의 차이는 설정을 넘기는 방식뿐입니다. 파일 이름만 받는 형태는
FPDF_GetMetaText / FPDF_GetFileIdentifier /
FPDFCatalog_GetLanguage에서 자동 채움과 함께
TPdfUaSaveOptions.Default를 쓰고,
TPdfUaSaveOptions 형태는 호출자가 Title,
Author, Subject, Keywords, Creator, Producer, CreationDate, ModDate,
Language, DocumentId, InstanceId, pdfuaid Part / Amd / Corr
식별자를 오버라이드할 수 있게 합니다
TPdfUaSaveOptions.PdfUa2는 Part 2를 선택하고 기본 pdfuaid:rev 값 2024를 제공하며, catalog에 /Version /2.0을 기록하여 증분 업데이트된 PDF 1.x source가 PDF 2.0을 유효 버전으로 갖게 합니다
성공하면 True를 반환합니다. 기본 SaveAs가 실패했거나 증분 업데이트를
붙일 수 없으면(PDF가 너무 짧음, 잘못된 trailer, 암호화된 소스) False를 반환합니다
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);
end;