PDFium Component Docs

Google PDFium · Delphi · C++Builder · Lazarus

قدرت نهفته در موتور مفسرِ فایل‌های PDF گوگل کروم را به‌طور بومی و ذاتی در قلبِ نرم‌افزارهای خود (VCL / LCL apps) جاری سازید.

مجموعه PDFiumPas پوششی برای PDFium گوگل — همان موتوری که نمایشگر PDF داخلی کروم را راه‌اندازی می‌کند — به‌صورت کامپوننت‌های بومی پاسکال ارائه می‌دهد، بنابراین شما به کیفیت رندر در سطح صنعتی، انطباق با استانداردها و یک نمایشگر قابل توسعه دست می‌یابید، بدون اینکه نیازی به نوشتن کدهای تعامل (interop) C توسط خودتان داشته باشید

بررسی کامل را بخوانید مرور کاتالوگ ویژگی‌ها

به چه دلیلی در میان خیل عظیمِ گزینه‌ها (other PDF wrappers)، ما بایستی PDFiumPas را انتخاب کنیم

تمامی نقاطِ ذکر شده در ذیل، بیانگر قابلیت‌های تعبیه شده‌ای می‌باشند که امکان تست و تایید صحت کارکردشان از سوی شما، ضمن بازبینی قسمتِ مربوط به مراجع API و نمونه‌های آموزشی برنامه، میسّر گشته است.

یک فناوری که پیکره‌اش روی ستون‌های موتورِ PDFium از شرکت گوگل بنا شده است.

همان موتوری را که نمایشگر PDF داخلی کروم را راه‌اندازی می‌کند، پوشش می‌دهد — آزمایش‌شده در عمل (battle-tested)، مطابق با استاندارد صنعت، و یک پایه قابل اعتماد برای کیفیت رندر و انطباق. شما قابلیت‌های واقعی موتور را به دست می‌آورید، نه یک اختراع دوباره.

Dynamically loads pdfium.dll / pdfium.v8.dll

وسیع‌ترین دایره از سازگاری و پوششِ نرم‌افزارهای IDE در این طبقه‌بندی.

نسخه‌های Delphi / C++Builder (از RAD Studio XE5 تا 13.1 Florence) به‌علاوه Lazarus / Free Pascal 3.8+، در محیط‌های Win32 و Win64. سه خانواده IDE از فایل‌های PDF ثابت (fixture) و مجموعه‌های تست رگرسیون یکسانی استفاده می‌کنند

147 Pas + 123 C++ test cases, byte-aligned

دامنه و طیفی وسیع از استانداردهای فایل PDF به‌طور جامع.

خروجی PDF/A-1b (SaveAsPdfA) + اعتبارسنجی (ValidatePdfA)، به‌علاوه اعتبارسنجی PDF/UA، PDF/E، PDF/X، PDF/R و PDF/VT و مسدودسازی (gating) بر اساس انطباق با نسخه — ویژگی‌هایی که برای یک پوشش (wrapper) پاسکال به‌طور استثنایی نادر است.

Dedicated units FPdfPdfa/Pdfua/Pdfe/Pdfx/Pdfr/Pdfvt.pas

امکاناتِ دسترس‌پذیری مربوط به روخوانی متون (read-aloud) / ابزارهای نمایش تصویر متناسب با اختلال کم‌بینایی (low-vision).

شیء TPdfReadingSession بلندخوانی (read-aloud) را برای موتورهای میزبان TTS هماهنگ می‌کند (واحدهای خواندن در سطح جمله، برجسته‌سازی در سطح کلمه، نگاشت متن خوانده شده)؛ به‌علاوه تبدیل‌های دید کم (low-vision transforms) شامل InvertPdfBitmap، GrayscalePdfBitmap، DuotonePdfBitmap و مشاهده زنده حالت شب دورنگ (live night-duotone)

An accessibility layer most wrappers entirely lack

رندرِ مرحله به مرحله با قابلیت لغو (cancellable) + عدم ایجاد حافظه‌ی مضاعف (Zero-copy).

مسیر رندر (render path) خروجی PDFium را مستقیماً در بافر DIB مربوط به TBitmap مقصد می‌نویسد و از کپی پیکسل‌های کل صفحه به ازای هر فریم (per-frame) صرف‌نظر می‌کند؛ متد RenderPageProgressive یک توکن لغو را بین تکرارها جستجو (poll) می‌کند و می‌تواند در اواسط رندر قطع شود

Saves one width×height×4-byte copy per frame at high DPI

استریمِ برخطِ داده‌ها و پردازش بر اساس تقاضا (On-demand streaming) برای رفع چالش در فایل‌های PDF با حجمِ چند گیگابایت.

از طریق آداپتور درخواستی (on-demand) TStream در LoadCustomDocument، موتور PDFium به‌صورت بلوک به بلوک اطلاعات را می‌خواند — اسناد چند گیگابایتی، از راه دور یا مبتنی بر پایگاه داده بدون نیاز به کپی در حافظه بارگذاری می‌شوند و تقریباً بلافاصله یک نمای اولیه قابل استفاده به دست می‌آید

2.x GB documents: near-instant first view

استفاده از سه جزء (component) مجزا، که در کنار آن 28 نمونه کدِ مشترک بینِ پلتفرمی ارائه گردیده است.

کامپوننت TPdf (موتور سند)، TPdfView (نمایشگر تعاملی)، TPdfThumbnailView (ناوبری با تصاویر بندانگشتی)؛ تعداد ۲۸ دموی مشترک در سه محیط توسعه (IDE)، که پوشش‌دهنده مشاهده، جستجو، پر کردن فرم، ادغام/جداسازی (merge/split)، خروجی دسته‌ای، چاپ، ممیزی امنیت (security audit)، گزارش‌های preflight و موارد دیگر می‌باشند

PDFViewer / PreflightReport / SecurityAudit / StandardsLab etc.

الگوهایی که اولویتشان با تدابیر امنیتی و محافظتی است (Security-first defaults).

لیست مجاز (allow-list) اکشن لینک (LinkOptions)، غیرفعال بودن پیش‌فرض اکشن‌های اجرای برنامه (launch)، و یک دموی SecurityAudit برای ممیزی سطوح ریسک — امن به‌طور پیش‌فرض در مقایسه با فعال بودن پیش‌فرض اکشن‌های خطرناک

Suited to security-sensitive finance / healthcare deployments

همراه با سورس‌کد اصلی · بدون دریافتِ حق‌امتیاز پس از توسعه (royalty-free) · تضمین پشتیبانیِ بلندمدت

به همراه سورس پاسکال، بدون حق امتیاز زمان اجرا (no runtime royalties)، و با نگهداری طولانی‌مدت (long-term maintenance) عرضه می‌شود. فایل‌های pdfium.dll و pdfium.v8.dll (با پشتیبانی از V8/XFA) نسخه Win32/Win64 را در خود دارد، به همراه هوک‌های رندرینگ اختیاری Skia

No per-deployment fees

شواهد ارائه‌شده

3خانواده‌های IDE: شامل Delphi / C++Builder / Lazarus
6+استانداردهای مختلف فرمت فایل‌های PDF نظیر: A / UA / E / X / R / VT
28دموی مشترک با کدهای پایه (COMMON) بین سه محیط توسعه (IDE)
270+تست‌های رگرسیونِ تدوین‌شده توسط پاسکال و زبان برنامه‌نویسی ++C

چه‌کسانی کاندیدایِ استفاده و انتخاب کتابخانه PDFiumPas هستند

نرم‌افزارهای مرور اسناد و خوانش داده‌ها (ویوئرها).

نمایشگرهای PDF تعبیه‌شده (Embedded PDF viewers) که به کیفیت رندرینگ در سطح کروم (Chrome-grade) و تعاملات پیشرفته نظیر انتخاب متن، برجسته‌سازی نتایج جستجو، لینک‌ها، زوم کردن، و مشاهده پیوسته دو صفحه‌ای (continuous two-page) نیاز دارند

تعبیه‌ی فناوری‌های مربوط به امکانات دسترس‌پذیری فایل‌ها و ابزارهای مرتبط با دستگاه‌های کمکی (assistive tech).

هماهنگ‌سازیِ ویژگی بلندخوانی (Read-aloud) و تبدیل‌های بصریِ مرتبط با کاربران کم‌بینا (low-vision transforms) — لایه‌ای کاربردی که اکثر بسته‌های رابط (PDF wrappers) به طور کامل فاقد آن هستند.

پیکربندی ابزارهای ارزیابی سطحِ مطابقت و ابزارهای ممیزی فایلِ پیش از انتشار (preflight toolchains).

اسنادی که نیازمند تولید قالب PDF/A و اعتبارسنجی آن، بهره‌مندی از ویژگی دسترسی‌پذیری مربوط به PDF/UA، محدودسازی نسخه‌های مجاز (version gating)، و گزارش‌های تست پیش از پرواز که مناسب یکپارچگی مداوم (CI-friendly) باشند، می‌باشند.

فایل‌هایی با فضای پرحجم (Huge) / یا اسنادی که در سرورهای خارجی تعبیه گشته‌اند (remote).

فایل‌های PDF چندین گیگابایتی و یا آن‌هایی که به بانک‌های اطلاعاتی (database-backed) وابسته‌اند و الزاماً به‌جای بارگذاری یکجا و ذخیره در حافظه‌ی موقت (memory)، می‌بایست بنا بر تقاضا (on demand) بارگذاری شوند.

تیم‌های نرم‌افزاری فعال در حوزه‌ی توسعه‌ی بین‌محیطی (Cross-IDE)

تیم‌هایی که همزمان از Delphi، C++Builder و Lazarus استفاده می‌کنند — یک مجموعه کامپوننت مشترک، داده‌های ثابت (fixtures) یکسان، و دموهای مشابه.

استقرار محصول در فضای نرم‌افزارهایی که با حوزه‌های به شدت امنیتی (Security-sensitive deployments) در تماس هستند.

کاربردی در سناریوها و کاربردهای مالی، حوزه سلامت، و پروژه‌های دولتی که نیاز به اعمال حساسیت بالا نسبت به کنترل لینک‌ها / و یا راه‌اندازی و اجرای فایل‌ها را دارند.

با نوشتن تنها چند سطر کد، یک صفحه از سند را رندر گرفته و پردازش کنید.

عاری از هرگونه قطعه‌کدهای رابطِ مبتنی بر C (که به‌شکل دستی نوشته شده باشند) — کامپوننت‌های این محصول یکپارچه و تماماً با زبان پاسکال (Pascal components) خلق شده‌اند:

uses PDFium;

var Pdf: TPdf;
    Bmp: TBitmap;
begin
  Pdf := TPdf.Create(nil);
  try
    Pdf.LoadFromFile('report.pdf');
    Bmp := TBitmap.Create;
    try
      Pdf.RenderPage(0, Bmp, 150 { DPI });
      Bmp.SaveToFile('page0.png');
    finally
      Bmp.Free;
    end;
  finally
    Pdf.Free;
  end;
end;

گام‌های بعدی

کار را با بررسی اجمالی محصول و شروع سریع (Quick Start) آغاز کنید، فهرست کامل ویژگی‌ها و مثال‌ها را مرور کنید، یا برای مشاهده آخرین تغییرات منتشرشده، یادداشت‌های انتشار (Release Notes) را بخوانید.