مقاله فنی

Building Tagged PDF Structure Trees in Delphi with PDFlibPas

این نسخه بومی‌سازی شده، Building Tagged PDF Structure Trees in Delphi with PDFlibPas را بر اساس مقاله پایه انگلیسی به‌روزرسانی شده برای تیم‌هایی که با Delphi، PDF و نرم‌افزارهای اسناد کار می‌کنند، بررسی می‌کند

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

محتوای همگام‌سازی شده از نسخه پایه

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

نکات مهم نسخه به‌روزرسانی شده:

  • ابتدا از فایل‌های ورودی کوچک و قابل بازتولید استفاده کنید
  • نام محصولات، APIها، فایل‌ها و مقادیر ثابت را دست‌نخورده نگه دارید
  • خروجی اعتبارسنج و نسخه‌ها را همراه با فایل تست تولید شده ذخیره کنید

تصمیمات عملی پیاده‌سازی

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

  • ابتدا از فایل‌های ورودی کوچک و قابل بازتولید استفاده کنید
  • نام محصولات، APIها، فایل‌ها و مقادیر ثابت را دست‌نخورده نگه دارید
  • خروجی اعتبارسنج و نسخه‌ها را همراه با فایل تست تولید شده ذخیره کنید

نکات کد و API

مثال‌های کد برای مقایسه مستقیم با پروژه‌های Delphi، C++Builder و Lazarus/FPC بدون تغییر حفظ شده‌اند

var
  Lib: TPDFlib;
begin
  Lib := TPDFlib.Create;
  try
    Lib.SetOrigin(1);                          // top-left origin
    Lib.SetPDFUAMode('en-US');                 // bumps the save version to PDF 1.7
    Lib.SetInformation(1, 'Service Manual');   // /Title is mandatory for PDF/UA
    Lib.AddRoleMap('ManualTitle', 'H1');       // custom type -> standard role
    Lib.AddStandardFont(4);
    Lib.SetTextSize(18);
    Lib.BeginTagEx2('ManualTitle', '', '', 'en-US', '', 'h1-cover', '');
    Lib.DrawText(72, 96, 'Service Manual');
    Lib.EndTag;
    Lib.BeginTag('Figure', 'Exploded view of the gearbox assembly', '');
    Lib.AddImageFromFile('gearbox.png', 0);
    Lib.EndTag;
    Lib.BeginArtifact('Layout');               // page decoration: excluded from reading
    // ... draw rules and background tint ...
    Lib.EndArtifact;
    Lib.SaveToFile('manual.pdf');
  finally
    Lib.Free;
  end;
end;
Lib.BeginTag('Table', '', '');
Lib.BeginTag('TR', '', '');
Lib.BeginTagEx2('TH', '', '', '', '', 'col-part', '');
Lib.SetStructElemScope('Column');          // valid only while this TH is open
Lib.DrawText(72, 120, 'Part');
Lib.EndTag;
Lib.BeginTagEx2('TH', '', '', '', '', 'col-torque', '');
Lib.SetStructElemScope('Column');
Lib.SetStructElemColSpan(2);               // header spans the value and unit columns
Lib.DrawText(200, 120, 'Tightening torque');
Lib.EndTag;
Lib.EndTag;
Lib.BeginTag('TR', '', '');
Lib.BeginTag('TD', '', '');
Lib.SetStructElemHeaders('col-part');      // explicit binding for irregular tables
Lib.DrawText(72, 140, 'M8 flange bolt');
Lib.EndTag;
Lib.EndTag;
Lib.EndTag; // Table

بررسی قبل از انتشار

فایل خروجی را با همان ابزارهایی بررسی کنید که مشتری یا مخزن اسناد استفاده خواهد کرد؛ نسخه کامپوننت، داده‌های تست، نسخه اعتبارسنج و نتیجه مشاهده شده را ثبت کنید