function SaveAsPdfR(const FileName: string): Boolean; overload;
function SaveAsPdfR(const FileName: string; const Options: TPdfRSaveOptions): Boolean; overload;
SaveAsPdfR ejecuta primero el SaveAs regular y luego superpone una actualización incremental sobre los bytes guardados que adjunta los marcadores de formato PDF/R-1. PDF/R-1 (ISO 23504-1:2020) es el subconjunto estricto de transporte de imágenes rasterizadas de PDF usado por el TWAIN Working Group para flujos de trabajo de documentos escaneados; lleva un búfer rasterizado de tamaño fijo por página, admite imágenes bitonales / en escala de grises / RGB y solo la compresión FlateDecode / CCITTFaxDecode / DCTDecode
El posprocesamiento inyecta cinco clases de bytes en el flujo guardado:
%PDF-raster-1.0, escrito entre el diccionario del trailer y la palabra clave startxref (ISO 23504-1 §5). Esto es exclusivo de PDF/R — los demás estándares PDF/x se identifican mediante XMP y entradas del diccionario InfoLa salida permanece idéntica byte a byte con el resultado del SaveAs base hasta
el final del PDF original; solo se añade la actualización incremental
(y el catálogo / Info de origen se reemplazan con versiones reducidas
mediante reescritura con el mismo número de objeto). Las dos sobrecargas
difieren solo en cómo se pasa la configuración: la forma con solo
nombre de archivo usa TPdfRSaveOptions.Default con
relleno automático de los cuatro campos Info y del DocumentId desde
FPDF_GetMetaText / FPDF_GetFileIdentifier
Devuelve True en caso de éxito
[0 0 w h], solo se permiten los filtros FlateDecode / CCITTFaxDecode (bitonal) / DCTDecode (gris de 8 bits o RGB), sin object streams, toda referencia indirecta debe tener número de generación cero, y cada página es esencialmente una sola imagen rasterizada. Los documentos generados por PDFium que ya coinciden con este patrón (p. ej. salida de escáner pasada por PDFium para reempaquetar) funcionan bien; los PDF arbitrarios ricos en contenido típicamente noTPdfRSaveOptions.StripCatalogOptionalEntries y StripInfoOptionalEntries son True por defecto; establézcalos en False si quiere que el inyector preserve todas las entradas de origen (la salida entonces no cumplirá §6.3 / §6.4.3, pero el marcador de versión y el XMP se adjuntan igual)%PDF-2.0 y cifrado AES. Los PDF generados por PDFium usan un encabezado 1.x, de modo que la salida cifrada no es candidata a PDF/R-1 sin un nuevo guardado adicional
// 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');