function ValidatePdfR: TPdfRValidationResult; overload;
function ValidatePdfR(const Options: TPdfRValidationOptions): TPdfRValidationResult; overload;
ValidatePdfR combina una inspección del archivo en bruto con una pasada de objetos de página de PDFium en vivo para ISO 23504-1:2020
%PDF-raster-x.y, las cabeceras permitidas, la prohibición de flujos de objetos, las listas blancas de los diccionarios catálogo e Info, los metadatos XMP, las fechas requeridas y el /ID del trailer/V y /R admitidos cuando la aplicación del perfil cifrado está habilitadaTPdfRValidationOptions.Default comprueba de 72 a 2400 DPI, permite una tolerancia geométrica de 0.5 puntos, exige una franja de página completa y aplica el perfil cifrado de PDF 2.0
El resultado es un registro TPdfRValidationResult:
prc1 (marcador PDF/R-1 encontrado), prcNone (sin marcador) o prcUnknown (fallo de análisis o documento inactivo)TPdfRValidationIssues que cubre marcadores de archivo, metadatos, perfil de cifrado, contenido solo ráster, geometría, color, resolución y parámetros de compresiónConformance es un nivel real de PDF/R y Issues está vacíoEl método es de solo lectura y restaura la página activa del llamador después de la validación
ValidatePdfR sobre un documento inactivo devuelve prcUnknown con un conjunto de problemas vacío
uses System.TypInfo;
var
Outcome: TPdfRValidationResult;
Issue: TPdfRValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\scan.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfR;
Memo1.Lines.Add('Level: ' + GetEnumName(TypeInfo(TPdfRConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfRValidationIssue), Ord(Issue)));
end;