مقالة تقنية

إنشاء عارض PDF غني بالميزات باستخدام PDFium VCL في دلفي

· برمجة PDF

في هذا البرنامج التعليمي، سنستكشف كيفية إنشاء تطبيق عرض ملفات PDF احترافي باستخدام. PDFium VCL، مكون Delphi قوي يغلف محرك عرض PDFium الخاص بـ Google. يوضح هذا العرض التوضيحي القدرات الأساسية للعرض التي تشكل أساس أي تطبيق PDF.

نظرة عامة

يوضح نموذج "PDF Viewer" الوظائف الأساسية اللازمة لعرض مستندات PDF في تطبيق Delphi. إنه يوفر حلاً كاملاً وجاهزًا للاستخدام لعرض ملفات PDF، مع ميزات مماثلة لقارئات PDF التجارية.

الميزات الرئيسية

  • تحميل المستندات. – افتح ملفات PDF مع دعم الحماية بكلمة مرور.
  • التنقل بين الصفحات. – أولاً، أزرار "السابق"، "التالي"، "الأول"، و"الأخير" مع اختصارات لوحة المفاتيح.
  • عناصر التحكم في التكبير. - مستويات تكبير متعددة، بما في ذلك التكبير ليناسب الصفحة والتكبير ليناسب العرض.
  • تدوير الصفحات - قم بتدوير الصفحات 90 درجة إلى اليسار أو اليمين.
  • تحديد النص. - حدد وانسخ النص من مستندات PDF.
  • علامات مرجعية. - التنقل باستخدام جدول محتويات المستند.
  • بحث النص. ابحث عن النص داخل المستند.
  • الطباعة. طباعة المستندات مع تحديد نطاق الصفحات.
  • حفظ باسم. تصدير المستند إلى ملف PDF جديد.

متطلبات ملف PDFium DLL.

قبل تشغيل أي تطبيق PDFium VCL، يجب تثبيت ملفات PDFium DLL. تقع ملفات DLL في: DLLs مجلد حزمة PDFium VCL:

  • pdfium32.dll الإصدار 32 بت (حوالي 5 ميجابايت).
  • pdfium64.dll الإصدار 64 بت (حوالي 6 ميجابايت).
  • pdfium32v8.dll – 32 بت مع محرك JavaScript V8 (~23 ميجابايت).
  • pdfium64v8.dll – 64 بت مع محرك JavaScript V8 (~27 ميجابايت).

التثبيت: تشغيل PDFiumVCL\DLLs\CopyDlls.bat بصفتك مسؤولاً. هذا البرنامج النصي يقوم تلقائيًا بنسخ ملفات DLL المناسبة إلى مجلدات النظام في نظام التشغيل Windows:

1
2
3
4
5
6
@echo off
REM On 64-bit Windows:
REM   - 32-bit DLLs %SystemRoot%\SysWOW64\
REM   - 64-bit DLLs %SystemRoot%\System32\
REM On 32-bit Windows:
REM   - 32-bit DLLs %SystemRoot%\System32\

ملاحظة: استخدم ملفات DLL القياسية (pdfium32.dll/pdfium64.dllبالنسبة لمعظم التطبيقات، لا يلزم استخدام إصدارات V8. الإصدارات الخاصة بـ V8 مطلوبة فقط إذا كانت ملفات PDF الخاصة بك تحتوي على JavaScript يتطلب التنفيذ.

المكونات الأساسية.

يستخدم هذا العرض التوضيحي مكونين رئيسيين من PDFium VCL:

1
2
Pdf: TPdf;        // Non-visual component for PDF operations
PdfView: TPdfView; // Visual component for rendering PDF pages

مكون TPdf.

الـ TPdf هذا المكون يتعامل مع جميع عمليات مستندات PDF، بما في ذلك التحميل والحفظ والوصول إلى خصائص المستند مثل البيانات الوصفية والعلامات والمواقع ومعلومات الصفحة.

مكون TPdfView.

الـ TPdfView هذا المكون هو عنصر تحكم مرئي قابل للتمرير يقوم بعرض صفحات PDF مع دعم التمرير السلس والتكبير والتعامل مع تفاعلات المستخدم.

تحميل مستند PDF.

فتح ملف PDF أمر بسيط:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
procedure TFormMain.SpeedButtonOpenPdfClick(Sender: TObject);
var
  Password: string;
begin
  if OpenDialog.Execute then
  begin
    Pdf.FileName := OpenDialog.FileName;
    Pdf.Password := '';
    Pdf.PageNumber := 0;
    
    try
      PdfView.Active := True;
    except
      on Error: EPdfError do
        if Error.Message = 'Password required or incorrect password' then
        begin
          if InputQuery('Enter Password', 'Password: ', Password) then
          begin
            Pdf.Password := Password;
            PdfView.Active := True;
          end
          else
            raise;
        end
        else
          raise;
    end;
    
    if PdfView.PageCount > 0 then
      PdfView.PageNumber := 1;
  end;
end;

التنقل بين الصفحات.

تنفيذ التنقل بين الصفحات بسيط باستخدام. PageNumber التمرير المستمر

1
2
3
4
5
6
7
8
9
10
11
// Navigate to first page
PdfView.PageNumber := 1;
 
// Navigate to last page
PdfView.PageNumber := PdfView.PageCount;
 
// Previous page
PdfView.PageNumber := PdfView.PageNumber - 1;
 
// Next page
PdfView.PageNumber := PdfView.PageNumber + 1;

التحكم في التكبير.

الـ TPdfView المكون يوفر خيارات تكبير مرنة:

1
2
3
4
5
6
7
8
9
10
11
12
13
// Set specific zoom levels
PdfView.Zoom := 1.0;    // 100%
PdfView.Zoom := 0.5;    // 50%
PdfView.Zoom := 2.0;    // 200%
 
// Fit to page width
PdfView.Zoom := PdfView.PageWidthZoom[PdfView.PageNumber];
 
// Fit entire page in view
PdfView.Zoom := PdfView.PageZoom[PdfView.PageNumber];
 
// Actual size (based on DPI)
PdfView.Zoom := PdfView.ActualSizeZoom[PdfView.PageNumber];

تدوير الصفحات

قم بتدوير الصفحات باستخدام Rotation التمرير المستمر

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Rotate right (clockwise)
case PdfView.Rotation of
  ro0:   PdfView.Rotation := ro90;
  ro90:  PdfView.Rotation := ro180;
  ro180: PdfView.Rotation := ro270;
  ro270: PdfView.Rotation := ro0;
end;
 
// Rotate left (counter-clockwise)
case PdfView.Rotation of
  ro0:   PdfView.Rotation := ro270;
  ro90:  PdfView.Rotation := ro0;
  ro180: PdfView.Rotation := ro90;
  ro270: PdfView.Rotation := ro180;
end;

عرض معلومات المستند

الوصول إلى بيانات وصف المستند من خلال TPdf المكون:

1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TFormMain.SpeedButtonShowInfoClick(Sender: TObject);
begin
  ShowMessage(
    'Author: ' + Pdf.Author + #13#10 +
    'Creator: ' + Pdf.Creator + #13#10 +
    'Keywords: ' + Pdf.Keywords + #13#10 +
    'Producer: ' + Pdf.Producer + #13#10 +
    'Subject: ' + Pdf.Subject + #13#10 +
    'Title: ' + Pdf.Title + #13#10 +
    'Creation date: ' + Pdf.CreationDate + #13#10 +
    'Modified date: ' + Pdf.ModifiedDate
  );
end;

العمل مع الإشارات المرجعية

يعرض النموذج شجرة عرض (TreeView) تحتوي على إشارات مرجعية المستند لتسهيل التنقل:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TFormMain.AddBookmarks(Node: TTreeNode; Bookmarks: TBookmarks);
var
  ChildNode: TTreeNode;
  I: Integer;
begin
  for I := 0 to Length(Bookmarks) - 1 do
  begin
    ChildNode := TreeViewBookmarks.Items.AddChildObject(
      Node,
      Bookmarks[I].Title,
      Bookmarks[I].Handle
    );
    ChildNode.HasChildren := Pdf.HasBookmarkChildren[Bookmarks[I]];
    
    if ChildNode.HasChildren then
      AddBookmarks(ChildNode, Pdf.BookmarkChildren[Bookmarks[I]]);
  end;
end;

خيارات العرض.

قم بتخصيص طريقة العرض باستخدام خيارات متنوعة.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Available render options
type
  TRenderOption = (
    reAnnotations,      // Render annotations
    reLcd,              // LCD optimized rendering
    reNoNativeText,     // Don't use native text output
    reGrayscale,        // Render in grayscale
    reLimitCache,       // Limit image cache size
    reHalftone,         // Use halftone for image stretching
    rePrinting,         // Optimize for printing
    reNoSmoothText,     // Disable text anti-aliasing
    reNoSmoothImage,    // Disable image anti-aliasing
    reNoSmoothPath      // Disable path anti-aliasing
  );
 
// Apply options to the view
PdfView.Options := [reAnnotations, reLcd];

الخلاصة.

يوفر نموذج "عارض PDF" أساسًا قويًا لبناء وظائف عرض ملفات PDF في تطبيقات Delphi الخاصة بك. باستخدام PDFium VCL، يمكنك الوصول إلى نفس محرك عرض PDF المستخدم في Google Chrome، مما يضمن عرضًا عالي الجودة ودقيقًا لملفات PDF.

يتعامل المكون تلقائيًا مع ميزات PDF المعقدة مثل التعليقات والحقول والنصوص المضمنة، مما يسمح لك بالتركيز على بناء الميزات الفريدة لتطبيقك بدلاً من تحليل PDF على مستوى منخفض.

قم بتنزيل PDFium VCL. من loslab.com للبدء في تطوير PDF في Delphi.