function SaveAsPdfR(const FileName: string): Boolean; overload;
function SaveAsPdfR(const FileName: string; const Options: TPdfRSaveOptions): Boolean; overload;
SaveAsPdfR exécute d'abord SaveAs, puis superpose une mise à jour incrémentielle sur les octets enregistrés afin d'attacher les marqueurs de format de fichier PDF/R-1. PDF/R-1 (ISO 23504-1:2020) est le sous-ensemble strict de transport d'images raster de PDF utilisé par le TWAIN Working Group pour les flux de documents numérisés ; il comporte un tampon raster de taille fixe par page, prend en charge uniquement les images bitonales / niveaux de gris / RGB et les compressions FlateDecode / CCITTFaxDecode / DCTDecode
Le post-traitement injecte cinq classes d'octets dans le flux enregistré :
%PDF-raster-1.0, écrit entre le dictionnaire de trailer et le mot-clé startxref (ISO 23504-1 §5). C'est propre à PDF/R — les autres normes PDF/x s'identifient plutôt via XMP et des entrées du Document Information DictionaryLa sortie reste octet pour octet identique au résultat de base de SaveAs jusqu'à la fin du PDF original ; seule la mise à jour incrémentielle est ajoutée (et le catalogue source ainsi que Info sont remplacés par des versions épurées via réécriture avec le même numéro d'objet). Les deux surcharges ne diffèrent que par la façon dont la configuration est transmise : la forme réservée au nom de fichier utilise TPdfRSaveOptions.Default avec remplissage automatique des quatre champs Info et de DocumentId à partir de FPDF_GetMetaText / FPDF_GetFileIdentifier
Renvoie True en cas de succès
[0 0 w h], seuls les filtres FlateDecode / CCITTFaxDecode (bitonal) / DCTDecode (gris 8 bits ou RGB) sont autorisés, pas de flux d’objet, chaque référence indirecte doit avoir un numéro de génération zéro, et chaque page est essentiellement une seule image raster. Les documents générés par PDFium qui correspondent déjà à ce modèle (par ex. sortie de scanner passée par PDFium pour reconditionnement) fonctionnent bien ; les PDF arbitraires riches en contenu ne le font généralement pasTPdfRSaveOptions.StripCatalogOptionalEntries et StripInfoOptionalEntries valent True par défaut ; mettez-les à False si vous voulez que l’injecteur préserve toutes les entrées source (la sortie ne respectera alors pas §6.3 / §6.4.3 mais le marqueur de version et le XMP sont toujours attachés)%PDF-2.0 et un chiffrement AES. Les PDF générés par PDFium utilisent un en-tête 1.x donc la sortie chiffrée n’est pas candidate PDF/R-1 sans autre ré-enregistrement
// 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');