PDFium Component Docs

راهنمای شروع سریع

این راهنما کمک می‌کند در چند دقیقه با مؤلفه‌های PDFium VCL کار را شروع کنید

مرحله 1: ایجاد یک پروژه جدید

  1. یک VCL Forms Application جدید در 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('صفحات: ' + IntToStr(Pdf1.PageCount));

// یا بارگذاری از یک جریان حافظه (memory 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('عبارت جستجو');
  if Position >= 0 then
    ShowMessage('پیدا شده در موقعیت: ' + IntToStr(Position))
  else
    ShowMessage('پیدا نشد');
end;

ایجاد PDF جدید

// ایجاد یک PDF جدید با متن
Pdf1.CreateDocument;
Pdf1.Compressed := True; // فعال‌سازی فشرده‌سازی جریان
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // اندازه A4
Pdf1.AddText('سلام دنیا!', '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('عنوان: ' + Pdf1.Title);
ShowMessage('نویسنده: ' + Pdf1.Author);
ShowMessage('سازنده: ' + Pdf1.Creator);
ShowMessage('تولیدکننده: ' + Pdf1.Producer);
ShowMessage('صفحات: ' + IntToStr(Pdf1.PageCount));
ShowMessage('نسخه: ' + IntToStr(Ord(Pdf1.PdfVersion)));

مرحله 6: اسناد دارای رمز عبور

// باز کردن یک PDF محافظت شده با رمز عبور
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'رمز عبور من';
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: چیدمان صفحه (حالت Fit در TPdfView)

FitMode سندهای طولانی را به‌طور خودکار در قاب نگه می‌دارد در زمان Resize و هنگام تغییر صفحه جاری:

PdfView1.FitMode := pfmFitPage; // کل صفحه در ناحیه نمایش (viewport)
// pfmFitWidth — عرض صفحه با عرض ناحیه نمایش مطابقت دارد
// pfmActualSize — 100%
// pfmNone — زوم دستی

// الگوی نمایشگر حالت تاریک (Dark-mode): ناحیه اسکرول تاریک، صفحه PDF سفید کاغذی
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;

مرحله 9: برجسته‌سازی جستجو

HighlightSearchText صفحه جاری نما را اسکن می‌کند و روی هر تطابق در هر بازترسیم ماسک HighlightColor را نقاشی می‌کند:

var
  MatchCount: Integer;
begin
  PdfView1.HighlightColor := clYellow;
  MatchCount := PdfView1.HighlightSearchText('فاکتور');
  Status.Caption := IntToStr(MatchCount) + ' مورد یافت شده';
end;

// رفتن به صفحه‌ای دیگر به‌طور خودکار برجسته‌سازی را پاک می‌کند

مرحله 10: خروجی بایگانی PDF/A

SaveAsPdfA ذخیرهٔ پایه را با یک update افزایشی پس‌پردازش می‌کند که یک جریان فراداده XMP، یک ICC مبتنی بر sRGB OutputIntent و یک catalog به‌روزشده تزریق می‌کند:

if Pdf1.SaveAsPdfA('C:\Report.pdfa.pdf', pac1b) then
  ShowMessage('PDF/A-1b ذخیره شد');

// بررسی انطباق یک سند ورودی
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('غیر PDF/A');
end;

گام‌های بعدی