کتابچه راهنمای Preflight

این کتابچه راهنما، رابط‌های برنامه‌نویسی (API) و نمونه‌های Preflight را در قالب دستورالعمل‌های وظیفه‌محور گروه‌بندی می‌کند؛ هنگامی که به امضاهای دقیق متدها نیاز دارید، به مرجع API مراجعه کنید و زمانی که به یک مسیر عملی برای برنامه، اسکریپت بیلد یا کار CI نیاز دارید، از این صفحه استفاده کنید

یک فرمت خروجی انتخاب کنید

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;

خروجی متنی (Text) بایت‌محور و مناسب برای ابزارهای diff است؛ فرمت JSON برای استفاده در خط لوله (pipeline) مناسب است؛ فرمت HTML خودمحور است و می‌توان آن را مستقیماً باز کرد یا به عنوان یک آرتفکت CI ذخیره کرد؛ فرمت CSV از ستون‌های ثابت برای گردش‌کارهای صفحه‌گسترده و گزارش‌های دسته‌ای (batch) استفاده می‌کند

اسناد 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;

گزارش PDF/VT بر روی شناسایی ISO 16612-2 و ساختار بخش سند تمرکز دارد: متادیتاهای XMP GTS_PDFVTVersion در متن عنصر یا به شکل ویژگی RDF، مطابقت تاریخ اصلاح، نشانگر پایه PDF/X، هدف خروجی (output intent)، پوشش DPartRoot، DPartRootNode، NodeNameList و DPart در سطح صفحه

یک پروفایل اعمال کنید

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;

پروفایل‌ها بررسی‌ها، هشدارها یا تمام راهنمایی‌های نام‌گذاری‌شده را سرکوب می‌کنند؛ زمانی که متوقف کردن برنامه در صورت خرابی (failing closed) مهم‌تر از نادیده گرفتن بی‌صدا یک نام منسوخ‌شده است، قبل از اعمال یک پروفایل نوشته‌شده توسط کاربر، از ValidatePreflightProfile استفاده کنید

یک پروفایل با قابلیت استفاده مجدد از یک پیش‌تنظیم ایجاد کنید

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;

برای ترکیب یک پیش‌تنظیم با نام‌های خاص پروژه، از MergePreflightProfiles استفاده کنید؛ برای بررسی انحراف پروفایل قبل از به‌روزرسانی فایل پیکربندی مشترک، از DiffPreflightProfiles استفاده کنید

گزارش را همراه با PDF بایگانی کنید

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

مسیر جاسازی متنی، یک بلوک کامنت خوانا را بعد از آخرین نشانگر EOF اضافه می‌کند؛ مسیر XMP یک داده با ساختار RDF را برای گردش‌کارهای بایگانی که بسته‌های متاداده را اسکن می‌کنند، اضافه می‌کند

یک گزارش جاسازی‌شده را اعتبارسنجی کنید

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

مسیر اعتبارسنجی، اثر انگشت جاسازی‌شده را با یک اجرای تازه از preflight روی بایت‌های منبع مقایسه می‌کند؛ کمک‌کننده diff خط‌محور است و برای گزارش‌های preflight مربوط به HotPDF بهینه شده است

یک مرحله تعمیر محافظه‌کارانه را اجرا کنید

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

کمک‌کننده تعمیر عمداً محدود می‌ماند؛ این ابزار بایت‌های اضافی بعد از آخرین نشانگر EOF و نشانگرهای گمشده EOF را مدیریت می‌کند، اما جداول cross-reference را بازسازی نمی‌کند یا جریان‌ها را بازنویسی نمی‌کند

گزارش‌های زیادی را تجمیع کنید

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

خروجی تجمیع‌شده یک خط وضعیت به ازای هر PDF و مجموع گزارش‌های پردازش‌شده، خرابی‌ها و هشدارها را فهرست می‌کند؛ زمانی که یک خط لوله به یک خلاصه نیاز دارد، حتی اگر گزارش‌های دقیق به ازای هر فایل ورودی نگهداری شوند، این ویژگی مفید است

از ابزار خط فرمان استفاده کنید

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) گردش کار کتابخانه را آینه‌سازی می‌کند: ورودی تک فایل یا دایرکتوری بازگشتی، خروجی متنی / JSON / HTML، رمز عبور اختیاری، پروفایل اختیاری، پیش‌تنظیم داخلی، پیشرفت دقیق و خلاصه تجمیع‌شده

یک داشبورد استاتیک بسازید

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

نمونه داشبورد یک فایل index.html به همراه گزارش‌های HTML به ازای هر فایل می‌نویسد؛ به وب‌سرور نیازی نیست، بنابراین خروجی می‌تواند به عنوان یک آرتفکت استاتیک منتشر شود

با مصرف‌کنندگان JSON به سبک veraPDF سازگار شوید

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

آداپتور معنای HotPDF را حفظ می‌کند در حالی که خرابی‌ها را به یک ساختار نتیجه اعتبارسنجی آشناتر برای ابزارهایی که از JSONهای شبیه به veraPDF استفاده می‌کنند، تغییر شکل می‌دهد

موضوعات مرتبط