function SaveAsPdfR(const FileName: string): Boolean; overload;
function SaveAsPdfR(const FileName: string; const Options: TPdfRSaveOptions): Boolean; overload;
SaveAsPdfR realiza primero el SaveAs normal, y luego coloca una actualización incremental sobre los bytes guardados que adjunta marcadores de formato de archivo PDF/R-1. PDF/R-1 (ISO 23504-1:2020) es el subconjunto estricto de transporte de imagen raster de PDF usado por el TWAIN Working Group para flujos de trabajo de documentos escaneados; lleva un búfer raster de tamaño fijo por página, y solo soporta imágenes bitonales / escala de grises / RGB y compresión FlateDecode / CCITTFaxDecode / DCTDecode
El posprocesamiento inyecta cinco clases de bytes en el flujo guardado:
%PDF-raster-1.0, escrito entre el diccionario de trailer y la palabra clave startxref (ISO 23504-1 §5). Esto es único de PDF/R — los otros estándares PDF/x se identifican a través de entradas XMP y del diccionario Info en su lugarLa salida permanece byte-idéntica al resultado base de SaveAs hasta el final del PDF original; solo se anexa la actualización incremental (y el catálogo / Info de origen se reemplazan con versiones reducidas mediante reescritura de mismo número de objeto). Las dos sobrecargas difieren solo en cómo se pasa la configuración: la forma solo de nombre de archivo usa TPdfRSaveOptions.Default con autorrelleno de los cuatro campos Info y DocumentId desde FPDF_GetMetaText / FPDF_GetFileIdentifier
Devuelve True en caso de éxito
[0 0 w h], solo se permiten filtros FlateDecode / CCITTFaxDecode (bitonal) / DCTDecode (gris de 8 bits o RGB), sin flujos de objeto, cada referencia indirecta debe tener número de generación cero y cada página es esencialmente una única imagen raster. Los documentos generados por PDFium que ya coinciden con este patrón (p. ej. salida de escáner pasada por PDFium para reempaquetado) funcionan bien; los PDF arbitrarios ricos en contenido normalmente noTPdfRSaveOptions.StripCatalogOptionalEntries y StripInfoOptionalEntries son True de forma predeterminada; 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 aún se adjuntan)%PDF-2.0 y cifrado AES. Los PDF generados por PDFium usan una cabecera 1.x así que la salida cifrada no es candidata PDF/R-1 sin un re-guardado adicional
// Salida PDF/R-1 simple; solo es significativa cuando el PDF de origen es
// ya es un escaneo rasterizado (una imagen por página, solo filtros permitidos)
if Pdf1.SaveAsPdfR('C:\Scan.pdfr.pdf') then
ShowMessage('Saved with PDF/R-1 markers');
// Validar para ver si también se cumplen las reglas estructurales
Pdf1.FileName := 'C:\Scan.pdfr.pdf';
Pdf1.Active := True;
if Pdf1.ValidatePdfR.IsCompliant then
ShowMessage('PDF/R-1 conformant');