Preflight Cookbook

Este recetario agrupa las API y demos de preflight en recetas orientadas a tareas Utilice la referencia de API cuando necesite firmas exactas; use esta página cuando necesite una ruta operativa para una aplicación, script de compilación o trabajo de CI

Choose an output format

var
  PDF: THotPDF;
begin
  PDF := THotPDF.Create(nil);
  try
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.txt');
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.json', '', pfJSON);
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.html', '', pfHTML);
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.csv', '', pfCSV);
  finally
    PDF.Free;
  end;
end;

La salida de texto es estable a nivel de bytes y cómoda para diff. JSON es adecuado para ingesta de pipelines. HTML es autocontenido y puede abrirse directamente o guardarse como artefacto de CI. CSV usa columnas estables para flujos de hoja de cálculo y reportes por lote

Validate PDF/VT documents

var
  PDF: THotPDF;
  Report: AnsiString;
begin
  PDF := THotPDF.Create(nil);
  try
    if not PDF.ValidatePDFVT('Input.pdf', Report) then
      WriteLn(string(Report));
  finally
    PDF.Free;
  end;
end;

El informe PDF/VT se centra en la identificación ISO 16612-2 y la estructura de partes del documento: XMP GTS_PDFVTVersion en texto de elemento o forma de atributo RDF, coincidencia de fecha de modificación, marcador base PDF/X, output intent, DPartRoot, DPartRootNode, NodeNameList y cobertura DPart a nivel de página

Apply a profile

var
  PDF: THotPDF;
  Report: AnsiString;
begin
  PDF := THotPDF.Create(nil);
  try
    Report := PDF.CreatePreflightReportWithProfile(
      'Input.pdf', '', 'project-preflight.ini', pfJSON);
  finally
    PDF.Free;
  end;
end;

Profiles suppress named checks, warnings, or all hints. Use ValidatePreflightProfile before applying a user-authored profile when failing closed is more important than silently ignoring an obsolete name.

Crear un perfil reutilizable a partir de un preset

var
  PDF: THotPDF;
  Profile: THPDFPreflightProfile;
begin
  PDF := THotPDF.Create(nil);
  try
    Profile := PDF.GetBuiltInPreflightProfile('compact');
    Profile.DisableWarnings := 'OpenAction,JavaScript,URIAction';
    PDF.SavePreflightProfile(Profile, 'compact-no-actions.ini');
  finally
    PDF.Free;
  end;
end;

Utilice MergePreflightProfiles para combinar un preset con nombres específicos del proyecto. Utilice DiffPreflightProfiles para revisar la deriva del perfil antes de actualizar un archivo de configuración compartido

Archive the report with the PDF

PDF.EmbedPreflightReportInPDF('Input.pdf', 'Input-with-report.pdf');
PDF.EmbedPreflightReportAsXMP('Input.pdf', 'Input-with-xmp-report.pdf');

La ruta de incrustación de texto agrega un bloque de comentario legible después del marcador EOF final. La ruta XMP agrega una carga con forma RDF para flujos de archivo que escanean paquetes de metadatos

Validate an embedded report

var
  OriginalReport: AnsiString;
  CurrentReport: AnsiString;
begin
  if not PDF.LoadAndValidatePreflightReport(
    'Input-with-report.pdf', OriginalReport, CurrentReport) then
    WriteLn(string(PDF.ComparePreflightReports(OriginalReport, CurrentReport)));
end;

La ruta de validación compara la huella incrustada con una ejecución preflight nueva sobre los bytes de origen. El helper de diff está orientado a líneas y ajustado para informes preflight de HotPDF

Ejecutar una pasada de reparación conservadora

var
  RepairsApplied: AnsiString;
begin
  if PDF.RepairPDFFromPreflightReport(
    'Broken.pdf', 'Broken-repaired.pdf', RepairsApplied) then
    WriteLn(string(RepairsApplied));
end;

El helper de reparación se mantiene intencionalmente acotado. Maneja bytes sobrantes después del marcador EOF final y marcadores EOF ausentes, pero no reconstruye tablas de referencias cruzadas ni reescribe flujos

Aggregate many reports

Reports[0] := PDF.CreatePreflightReport('A.pdf');
Reports[1] := PDF.CreatePreflightReport('B.pdf');
Summary := PDF.AggregatePreflightReports(Reports);

La salida agregada lista una línea de estado por PDF y totales de informes procesados, fallos y advertencias. Es útil cuando un pipeline necesita un resumen aunque los informes detallados se conserven por archivo de entrada

Usar la herramienta de línea de comandos

HotPDFPreflight Input.pdf -f json -o reports
HotPDFPreflight Input.pdf --pdfvt -o reports
HotPDFPreflight C:\Archive -r --preset compact -f text -o reports --aggregate reports\Aggregate.txt
HotPDFPreflight C:\Archive -r --profile project-preflight.ini -f html -o reports

La CLI refleja el flujo de la biblioteca: entrada de un archivo o directorio recursivo, salida text / JSON / HTML, contraseña opcional, perfil opcional, preset integrado, progreso detallado y resumen agregado

Build a static dashboard

PreflightDashboard C:\Archive C:\Archive\preflight-dashboard

La demo de panel escribe un index.html más informes HTML por archivo. No se requiere servidor web, por lo que la salida puede publicarse como artefacto estático

Adapt to veraPDF-style JSON consumers

Report := PDF.CreatePreflightReport('Input.pdf');
JSON := PDF.ConvertPreflightReportToVeraPDFStyle(Report);

El adaptador conserva la semántica de HotPDF mientras transforma los fallos en una estructura familiar de resultados de validación para herramientas que ya consumen JSON de estilo veraPDF

Related Topics