function SaveAsPdfR(const FileName: string): Boolean; overload;
function SaveAsPdfR(const FileName: string; const Options: TPdfRSaveOptions): Boolean; overload;
SaveAsPdfR는 먼저 일반 SaveAs를 수행한 뒤, 저장된 바이트 위에 PDF/R-1 파일 포맷 마커를 붙이는 증분 업데이트를 얹습니다. PDF/R-1(ISO 23504-1:2020)은 TWAIN Working Group이 스캔 문서 워크플로에 쓰는 엄격한 래스터 이미지 전송용 PDF 부분집합입니다. 페이지마다 고정 크기의 래스터 버퍼를 하나 두고, bitonal / 그레이스케일 / RGB 이미지를 지원하며 압축은 FlateDecode / CCITTFaxDecode / DCTDecode만 허용합니다
후처리는 저장된 스트림에 다섯 부류의 바이트를 주입합니다
%PDF-raster-1.0 버전 식별 주석으로, trailer 딕셔너리와 startxref 키워드 사이에 기록됩니다(ISO 23504-1 §5). 이것은 PDF/R에만 있는 방식입니다 — 다른 PDF/x 표준들은 XMP와 Info 딕셔너리 항목으로 자신을 식별합니다출력은 원본 PDF 끝까지 기본 SaveAs 결과와 바이트 단위로 동일합니다. 뒤에 붙는 것은 증분 업데이트뿐이며
(같은 오브젝트 번호 재작성으로 소스 catalog / Info는 깎아낸 버전으로 교체됩니다) 두 오버로드의
차이는 설정을 넘기는 방식뿐입니다. 파일 이름만 받는 형태는
FPDF_GetMetaText / FPDF_GetFileIdentifier에서 네 Info 필드와 DocumentId를
자동 채움하는 TPdfRSaveOptions.Default를 씁니다
성공하면 True를 반환합니다
[0 0 w h]여야 하며, FlateDecode / CCITTFaxDecode(bitonal) / DCTDecode(8비트 그레이 또는 RGB) 필터만 허용되고, 오브젝트 스트림은 없어야 하고, 모든 간접 참조의 generation number는 0이어야 하고, 각 페이지는 본질적으로 단일 래스터 이미지여야 합니다. 이 패턴에 이미 맞는 PDFium 생성 문서(예: 재포장을 위해 PDFium을 통과한 스캐너 출력)는 잘 동작하지만, 임의의 콘텐츠가 풍부한 PDF는 보통 그렇지 않습니다TPdfRSaveOptions.StripCatalogOptionalEntries와 StripInfoOptionalEntries는 기본값이 True입니다. 주입기가 소스 항목을 모두 보존하게 하려면 False로 두세요(그러면 출력은 §6.3 / §6.4.3을 충족하지 않지만 버전 마커와 XMP는 계속 붙습니다)%PDF-2.0 헤더와 AES 암호화로 한정합니다. PDFium 생성 PDF는 1.x 헤더를 쓰므로 암호화된 출력은 추가 재저장 없이는 PDF/R-1 후보가 아닙니다
// Simple PDF/R-1 output; only meaningful when the source PDF is
// already a raster scan (one image per page, allowed filters only).
if Pdf1.SaveAsPdfR('C:\Scan.pdfr.pdf') then
ShowMessage('Saved with PDF/R-1 markers');
// Validate to see whether structural rules are also satisfied
Pdf1.FileName := 'C:\Scan.pdfr.pdf';
Pdf1.Active := True;
if Pdf1.ValidatePdfR.IsCompliant then
ShowMessage('PDF/R-1 conformant');