این راهنما کمک میکند در چند دقیقه با مؤلفههای PDFium VCL کار را شروع کنید
Pdf مربوط به TPdfView را به مؤلفه TPdf خود اشاره دهیدبارگذاری ساده 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;
// رفتن به صفحه بعد
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 جدید با متن
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;
// خواندن متادیتا سند
ShowMessage('عنوان: ' + Pdf1.Title);
ShowMessage('نویسنده: ' + Pdf1.Author);
ShowMessage('سازنده: ' + Pdf1.Creator);
ShowMessage('تولیدکننده: ' + Pdf1.Producer);
ShowMessage('صفحات: ' + IntToStr(Pdf1.PageCount));
ShowMessage('نسخه: ' + IntToStr(Ord(Pdf1.PdfVersion)));
// باز کردن یک PDF محافظت شده با رمز عبور
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'رمز عبور من';
Pdf1.Active := True;
برای 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;
FitMode سندهای طولانی را بهطور خودکار در قاب نگه میدارد
در زمان Resize و هنگام تغییر صفحه جاری:
PdfView1.FitMode := pfmFitPage; // کل صفحه در ناحیه نمایش (viewport)
// pfmFitWidth — عرض صفحه با عرض ناحیه نمایش مطابقت دارد
// pfmActualSize — 100%
// pfmNone — زوم دستی
// الگوی نمایشگر حالت تاریک (Dark-mode): ناحیه اسکرول تاریک، صفحه PDF سفید کاغذی
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;
HighlightSearchText صفحه جاری نما را اسکن میکند و
روی هر تطابق در هر
بازترسیم ماسک HighlightColor را نقاشی میکند:
var
MatchCount: Integer;
begin
PdfView1.HighlightColor := clYellow;
MatchCount := PdfView1.HighlightSearchText('فاکتور');
Status.Caption := IntToStr(MatchCount) + ' مورد یافت شده';
end;
// رفتن به صفحهای دیگر بهطور خودکار برجستهسازی را پاک میکند
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;