Preflight Cookbook

Šioje knygelėje preflight API ir demo programos sugrupuotos į užduotimis grįstus receptus. Tikslias parašų formas žiūrėkite API reference, o šį puslapį naudokite, kai reikia veikiančio kelio programai, build scriptui arba CI darbui

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;

Teksto išvestis yra baitais pastovi ir draugiška skirtumų palyginimui. JSON tinka duomenų kanalų apdorojimui. HTML yra savarankiškas ir gali būti atidaromas tiesiogiai arba išsaugomas kaip CI artefaktas. CSV naudoja pastovius stulpelius skaičiuoklių ir paketinių ataskaitų darbo eigos scenarijams

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;

PDF/VT ataskaita sutelkia dėmesį į ISO 16612-2 identifikaciją ir dokumento dalių struktūrą: XMP GTS_PDFVTVersion elementų tekste arba RDF atributo forma, modifikavimo datos atitikimą, PDF/X bazinį žymeklį, output intent, DPartRoot, DPartRootNode, NodeNameList ir puslapio lygio DPart aprėptį

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.

Sukurkite pakartotinai naudojamą profilį iš išankstinio nustatymo

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;

Naudokite MergePreflightProfiles, kad sujungtumėte išankstinį nustatymą su projektui specifiniais pavadinimais. Naudokite DiffPreflightProfiles profilio pokyčiams peržiūrėti prieš atnaujindami bendrą konfigūracijos failą

Archive the report with the PDF

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

Teksto įterpimo kelias prideda skaitomą komentarų bloką po paskutinio EOF žymeklio. XMP kelias prideda RDF formos naudingąją apkrovą archyvavimo srautams, kurie skenuoja metaduomenų paketus

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;

Validavimo kelias lygina įdėtą atspaudą su naujai atliktu preflight paleidimu pagal šaltinio baitus. Diff pagalbinė priemonė yra eilutėmis orientuota ir pritaikyta HotPDF preflight ataskaitoms

Vykdykite konservatyvų taisymo praėjimą

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

Taisymo pagalbinė priemonė sąmoningai išlieka siaura. Ji tvarko po galutinio EOF žymeklio likusius baitus ir trūkstamus EOF žymeklius, bet neperkuria kryžminių nuorodų lentelių ir nerašo srautų iš naujo

Aggregate many reports

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

Bendra išvestis pateikia vieną būsenos eilutę kiekvienam PDF ir bendras apdorotų ataskaitų, nesėkmių ir įspėjimų sumas. Ji naudinga, kai konvejeriui reikia vienos santraukos, nors detalios ataskaitos laikomos kiekvienam įvesties failui

Naudokite komandinės eilutės įrankį

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 atkartoja bibliotekos srautą: vienas failas arba rekursinis katalogo įvestis, text / JSON / HTML išvestis, pasirenkamas slaptažodis, pasirenkamas profilis, įmontuotas išankstinis nustatymas, išsami progreso informacija ir bendra santrauka

Build a static dashboard

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

Dashboard demonstracija išrašo index.html ir atskiras HTML ataskaitas kiekvienam failui. Web serverio nereikia, todėl išvestį galima paskelbti kaip statinį artefaktą

Adapt to veraPDF-style JSON consumers

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

Adapteris išlaiko HotPDF semantiką, bet nesėkmes permodeliuoja į pažįstamą validavimo rezultato struktūrą įrankiams, kurie jau naudoja veraPDF tipo JSON

Related Topics