PDFium Delphi Component Docs

دليل البدء السريع

سيساعدك هذا الدليل على البدء بمكونات PDFium VCL في غضون دقائق قليلة.

الخطوة 1: إنشاء مشروع جديد

  1. أنشئ تطبيق VCL Forms جديد في بيئة التطوير (IDE) لديك
  2. احفظ المشروع في موقع مناسب

الخطوة 2: إضافة المكونات إلى النموذج

  1. افتح لوحة مكونات losLab
  2. ضع مكون TPdf على النموذج
  3. ضع مكون TPdfView على النموذج
  4. اضبط خاصية Pdf الخاصة بـ TPdfView للإشارة إلى مكون TPdf

الخطوة 3: تحميل أول ملف PDF

تحميل PDF بسيط:

// تحميل ملف PDF
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));

// أو التحميل من stream في الذاكرة
var
  Stream: TMemoryStream;
begin
  Stream := TMemoryStream.Create;
  try
    Stream.LoadFromFile('C:\Sample.pdf');
    Pdf1.LoadDocument(Stream, True);
    Pdf1.Active := True;
  finally
    Stream.Free;
  end;
end;

الخطوة 4: عمليات PDF الأساسية

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

// الانتقال إلى الصفحة التالية
if PdfView1.PageNumber < Pdf1.PageCount then
  PdfView1.PageNumber := PdfView1.PageNumber + 1;

// الانتقال إلى الصفحة السابقة
if PdfView1.PageNumber > 1 then
  PdfView1.PageNumber := PdfView1.PageNumber - 1;

استخراج النصوص

// استخراج كل النصوص من الصفحة الحالية
Pdf1.PageNumber := 1;
Memo1.Text := Pdf1.Text;

// استخراج النص من منطقة مستطيلة
var
  RectText: WString;
begin
  RectText := Pdf1.TextInRectangle(100, 100, 500, 200);
  ShowMessage(RectText);
end;

البحث في النص

// البحث عن نص في المستند
var
  Position: Integer;
begin
  Position := Pdf1.FindFirst('search term');
  if Position >= 0 then
    ShowMessage('Found at position: ' + IntToStr(Position))
  else
    ShowMessage('Not found');
end;

إنشاء PDF جديد

// إنشاء PDF جديد بنص
Pdf1.CreateDocument;
Pdf1.Compressed := True; // تمكين ضغط stream
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // حجم A4
Pdf1.AddText('Hello World!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf1.SaveAs('C:\NewDocument.pdf');
Pdf1.Active := False;

التكبير والعرض

// تعيين مستوى التكبير (1.0 = 100%)
PdfView1.Zoom := 1.5; // 150%

// تعيين وضع العرض
PdfView1.DisplayMode := dmSingleContinuous;

// تدوير الصفحة
PdfView1.Rotation := ro90;

الخطوة 5: خصائص المستند

// قراءة البيانات الوصفية للمستند
ShowMessage('Title: ' + Pdf1.Title);
ShowMessage('Author: ' + Pdf1.Author);
ShowMessage('Creator: ' + Pdf1.Creator);
ShowMessage('Producer: ' + Pdf1.Producer);
ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));
ShowMessage('Version: ' + IntToStr(Ord(Pdf1.PdfVersion)));

الخطوة 6: المستندات المحمية بكلمة مرور

// فتح PDF محمي بكلمة مرور
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;

الخطوة 7: المستندات الكبيرة (التحميل المتدفق)

للملفات PDF متعددة الجيجابايت أو المصادر البعيدة / المعتمدة على قواعد البيانات، استخدم LoadCustomDocument بحيث تسحب PDFium الكتل عند الطلب بدلاً من تخزين الملف كاملاً في الذاكرة:

var
  FileStream: TFileStream;
begin
  FileStream := TFileStream.Create('C:\Huge.pdf', fmOpenRead or fmShareDenyWrite);
  Pdf1.LoadCustomDocument(FileStream, True); // AOwnsStream
  Pdf1.Active := True;
end;

الخطوة 8: تخطيط الصفحة (وضع ملاءمة TPdfView)

FitMode يبقي المستندات الطويلة مؤطرة تلقائيًا عند Resize وعند تغيير الصفحة الحالية:

PdfView1.FitMode := pfmFitPage; // الصفحة بكاملها في منطقة العرض
// pfmFitWidth — عرض الصفحة يطابق عرض منطقة العرض
// pfmActualSize — 100%
// pfmNone — تكبير يدوي

// نمط عارض الوضع الداكن: منطقة تمرير داكنة، صفحة PDF بيضاء ورقية
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;

الخطوة 9: تمييز نتائج البحث

HighlightSearchText يفحص صفحة العرض الحالية ويرسم قناع HighlightColor فوق كل تطابق في كل إعادة رسم:

var
  MatchCount: Integer;
begin
  PdfView1.HighlightColor := clYellow;
  MatchCount := PdfView1.HighlightSearchText('invoice');
  Status.Caption := IntToStr(MatchCount) + ' matches';
end;

// الانتقال إلى صفحة أخرى يمسح التمييز تلقائيًا

الخطوة 10: إخراج أرشيفي PDF/A

SaveAsPdfA يعالج الحفظ الأساسي بعد ذلك بتحديث تدريجي يحقن مجرى بيانات XMP وصفية وOutputIntent ICC من نوع sRGB وCatalog مستند مُحدَّث:

if Pdf1.SaveAsPdfA('C:\Report.pdfa.pdf', pac1b) then
  ShowMessage('Saved PDF/A-1b');

// التحقق من توافق مستند وارد
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('Not PDF/A');
end;

الخطوات التالية