function SaveAsPdfA(const FileName: string; Conformance: TPdfAConformance = pac1b): Boolean; overload;
function SaveAsPdfA(const FileName: string; const Options: TPdfASaveOptions): Boolean; overload;
SaveAsPdfA는 먼저 일반 SaveAs를 수행한 뒤, 저장된 바이트 위에 파일을 PDF/A 아카이브로 승격시키는 증분 업데이트를 얹습니다(기본값 PDF/A-1b. ISO 19005-1, Cor.1:2007 포함). 이 후처리는 저장된 스트림에 네 가지를 주입합니다
pdfaid:part = 1, pdfaid:conformance = B) ISO 19005-1 6.7.3의 요구대로 모든 Document Information Dictionary 항목을 XMP 등가물로 미러링하며(Title → dc:title, Author → dc:creator, Subject → dc:description, Keywords → pdf:Keywords, Creator → xmp:CreatorTool, Producer → pdf:Producer, CreationDate → xmp:CreateDate, ModDate → xmp:ModifyDate) 6.7.8 / Cor.1이 요구하는 pdfaid 확장 스키마 기술을 임베드하는 XMP 메타데이터 스트림TPdfASaveOptions.IccProfileData로 넘길 수 있습니다/ID 배열(ISO 19005-1 6.1.3상 필수). 소스 PDF가 이미 파일 식별자를 갖고 있으면 기존의 16바이트 permanent 및 changing ID를 재사용하고, 그렇지 않으면 소스 바이트에서 결정론적인 16바이트 폴백 ID를 유도합니다출력은 원본 PDF 끝까지 기본 SaveAs 결과와 바이트 단위로 동일합니다. 뒤에 붙는 것은 증분 업데이트뿐입니다
PDF/A를 이해하지 못하는 기존 리더도 일반 SaveAs와 똑같이 파일을
렌더링합니다. 두 오버로드의 차이는 conformance / 옵션을 넘기는 방식뿐입니다 —
TPdfAConformance 형태는 흔한 경우(pac1b)의 지름길이고,
TPdfASaveOptions 형태는 전체 설정 표면을 갖춘
레코드를 받습니다. Title, Author, Subject, Keywords, Creator, Producer,
CreationDate, ModDate, DocumentId, InstanceId의 선택적
오버라이드가 포함됩니다. 비워 둔 필드는 FPDF_GetMetaText /
FPDF_GetFileIdentifier에서 자동으로 채워지므로, 전형적인 호출자는
Conformance 외에는 어떤 필드도 설정할 필요가 없습니다
Conformance 값은 대상 표준과
레벨을 고릅니다. PDF/A-1(ISO 19005-1)은 pac1b와
pac1a를 제공하고, PDF/A-2(ISO 19005-2)와 PDF/A-3(ISO 19005-3)는
pac2b / pac2u /
pac2a, pac3b / pac3u /
pac3a로 b, u, a 레벨을 추가합니다. 주입되는 pdfaid:part(1, 2, 3)와
pdfaid:conformance(A, B, U)는 요청한 값을 따르며,
OutputIntent는 ISO 19005-2가 모든 파트에 대해 유지하는 GTS_PDFA1 서브타입을 갖습니다. 후처리기가 논리 구조를
합성할 수 없기 때문에 Level A 요청
(pac1a / pac2a / pac3a)은 소스에 해당 레벨이 요구하는 태그된 PDF 구조가 없으면
자동으로 대응하는 Level B로 다운그레이드됩니다 — 저장된 파일이
거짓 Level A 주장을 하는 일은 없습니다
성공하면 True를 반환합니다. 기본 SaveAs가 실패했거나
증분 업데이트를 붙일 수 없거나(PDF가 너무 짧음, 잘못된 trailer) ICC 프로파일
데이터를 넘겼는데 검증에 실패했으면 False를 반환합니다
/Encrypt 키를 금지하기 때문입니다 (내부적으로 기본 저장은 saRemoveSecurity로 돌아갑니다)ValidatePdfA로 결과를 검사해 남은 이슈를 운영자에게 알리세요
// Simple PDF/A-1b output using the bundled sRGB profile
if Pdf1.SaveAsPdfA('C:\Report.pdfa.pdf') then
ShowMessage('Saved PDF/A-1b');
// With a custom ICC profile
var
Opts: TPdfASaveOptions;
begin
Opts := Default(TPdfASaveOptions);
Opts.Conformance := pac1b;
Opts.IccProfileData := TFile.ReadAllBytes('C:\Profiles\Coated.icc');
Pdf1.SaveAsPdfA('C:\Report.cmyk.pdfa.pdf', Opts);
end;