این نسخه بومیسازی شده، PDF/A and PDF/UA Preflight in Delphi with PDFlibPas را بر اساس مقاله پایه انگلیسی بهروزرسانی شده برای تیمهایی که با Delphi، PDF و نرمافزارهای اسناد کار میکنند، بررسی میکند
این صفحه، نسخه پایه بهروزرسانی شده را به نقاط کنترلی عملی برای طراحی، پیادهسازی و اعتبارسنجی تبدیل میکند
محتوای همگامسازی شده از نسخه پایه
مقاله پایه با زمینههای عملی، تصمیمات فنی و مثالهای ملموس گسترش یافته است، بنابراین این صفحه به جای یک خلاصه کوتاه، به عنوان یک راهنمای کاری عمل میکند
نکات مهم نسخه بهروزرسانی شده:
- ابتدا از فایلهای ورودی کوچک و قابل بازتولید استفاده کنید
- نام محصولات، APIها، فایلها و مقادیر ثابت را دستنخورده نگه دارید
- خروجی اعتبارسنج و نسخهها را همراه با فایل تست تولید شده ذخیره کنید
تصمیمات عملی پیادهسازی
با نوع فایل، نتیجه مورد انتظار، و خطایی که کاربر باید ببیند شروع کنید؛ سپس هر فراخوانی API را به یک نتیجه قابل بررسی پیوند دهید تا اعتبارسنجی، لاگها و پشتیبانی بتوانند وضعیت مشتری را بازتولید کنند
- ابتدا از فایلهای ورودی کوچک و قابل بازتولید استفاده کنید
- نام محصولات، APIها، فایلها و مقادیر ثابت را دستنخورده نگه دارید
- خروجی اعتبارسنج و نسخهها را همراه با فایل تست تولید شده ذخیره کنید
نکات کد و API
مثالهای کد برای مقایسه مستقیم با پروژههای Delphi، C++Builder و Lazarus/FPC بدون تغییر حفظ شدهاند
function GateArchiveUpload(Pdf: TPDFlib; const FileName: string): Boolean;
var
ListId, I: Integer;
begin
ListId := Pdf.CheckFileCompliance(FileName, '', 1, 0); // 1 = PDF/A
if ListId = 0 then
begin
// 0 means "no findings" OR "file unreadable" -- disambiguate before passing
Result := Pdf.LastErrorCode = 0;
Exit;
end;
for I := 0 to Pdf.GetStringListCount(ListId) - 1 do
LogFinding(FileName, Pdf.GetStringListItem(ListId, I));
Pdf.ReleaseStringList(ListId);
Result := False;
end;var
Pdf: TPDFlib;
Diag: WideString;
begin
Pdf := TPDFlib.Create;
try
Pdf.NewDocument;
Pdf.SetPDFAMode(1);
Pdf.LoadOutputIntentProfile('sRGB-IEC61966-2.1.icc', 'RGB');
Pdf.SetPDFUAMode('en-US');
Pdf.SetInformation(1, 'Quarterly Statement'); // /Title: required for PDF/UA
// ... draw tagged content here ...
Diag := Pdf.GetPDFUADiagnostics;
if Diag <> '' then
Writeln('fix before shipping: ', Diag);
Pdf.SaveToFile('statement.pdf');
// the preflight that counts runs on the saved file:
Writeln(Pdf.CreatePreflightReport('statement.pdf', '', 1, 0));
finally
Pdf.Free;
end;
end;بررسی قبل از انتشار
فایل خروجی را با همان ابزارهایی بررسی کنید که مشتری یا مخزن اسناد استفاده خواهد کرد؛ نسخه کامپوننت، دادههای تست، نسخه اعتبارسنج و نتیجه مشاهده شده را ثبت کنید