Preflight Cookbook

Acest cookbook grupează API-urile și demo-urile de preflight în rețete orientate pe sarcini. Folosește referința API când ai nevoie de semnături exacte; folosește această pagină când ai nevoie de o cale de lucru pentru o aplicație, un script de build sau un job CI

Alege un format de ieșire

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;

Ieșirea text este stabilă la nivel de octet și potrivită pentru diff JSON este potrivit pentru ingestie în pipeline. HTML este autonom și poate fi deschis direct sau salvat ca artefact CI. CSV folosește coloane stabile pentru foi de calcul și fluxuri de rapoarte batch

Validează documente PDF/VT

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;

Raportul PDF/VT se concentrează pe identificarea ISO 16612-2 și pe structura document-part: XMP GTS_PDFVTVersion în textul elementului sau în formă de atribut RDF, potrivirea datei de modificare, marcatorul de bază PDF/X, output intent, DPartRoot, DPartRootNode, NodeNameList și acoperirea DPart la nivel de pagină

Aplică un profil

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;

Profilele suprimă verificări numite, avertismente sau toate sugestiile Folosește ValidatePreflightProfile înainte de a aplica un profil scris de utilizator atunci când eșecul în mod închis este mai important decât ignorarea silențioasă a unui nume învechit

Creează un profil reutilizabil dintr-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;

Folosește MergePreflightProfiles pentru a combina un preset cu nume specifice proiectului. Folosește DiffPreflightProfiles pentru a revizui deriva de profil înainte de actualizarea unui fișier de configurare partajat

Arhivează raportul împreună cu PDF-ul

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

Calea de încorporare a textului adaugă un bloc de comentarii lizibil după marcatorul EOF final. Calea XMP adaugă o sarcină utilă în formă RDF pentru fluxurile de arhivare care scanează pachete de metadate

Validează un raport încorporat

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

Calea de validare compară amprenta încorporată cu o rulare preflight nouă peste octeții sursă. Helperul diff este orientat pe linii și calibrat pentru rapoartele preflight HotPDF

Rulează o trecere de reparare conservatoare

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

Helperul de reparare rămâne intenționat restrâns. Gestionează octeții rămași după marcatorul EOF final și marcatorii EOF lipsă, dar nu reconstruiește tabelele cross-reference și nu rescrie fluxurile

Agregă multe rapoarte

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

Ieșirea agregată afișează un rând de stare per PDF și totalurile pentru rapoarte procesate, eșecuri și avertismente. Este utilă atunci când un pipeline are nevoie de un singur rezumat, chiar dacă rapoartele detaliate sunt păstrate per fișier de intrare

Folosește utilitarul din linia de comandă

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

CLI-ul oglindește fluxul bibliotecii: o intrare de fișier sau de director recursiv, ieșire text / JSON / HTML, parolă opțională, profil opțional, preset încorporat, progres detaliat și rezumat agregat

Construiește un dashboard static

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

Demo-ul dashboard scrie un index.html plus rapoarte HTML per fișier. Nu este necesar un server web, astfel că ieșirea poate fi publicată ca artefact static

Adaptează-te la consumatorii JSON în stil veraPDF

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

Adaptorul păstrează semantica HotPDF în timp ce remodelează eșecurile într-o structură familiară de rezultat al validării pentru instrumentele care consumă deja JSON de tip veraPDF

Subiecte înrudite