PDFium Component Docs

คู่มือเริ่มต้นใช้งาน

คู่มือนี้จะช่วยให้คุณเริ่มใช้งานคอมโพเนนต์ PDFium VCL ได้ภายในไม่กี่นาที

ขั้นตอนที่ 1: สร้างโปรเจ็กต์ใหม่

  1. สร้าง VCL Forms Application ใหม่ใน IDE ของคุณ
  2. บันทึกโปรเจ็กต์ไว้ในตำแหน่งที่สะดวก

ขั้นตอนที่ 2: เพิ่มคอมโพเนนต์ลงใน Form ของคุณ

  1. เปิดพาเลตคอมโพเนนต์ losLab
  2. วางคอมโพเนนต์ TPdf ลงบน Form ของคุณ
  3. วางคอมโพเนนต์ TPdfView ลงบน Form ของคุณ
  4. ตั้งค่าพร็อพเพอร์ตี Pdf ของ TPdfView ให้ชี้ไปยังคอมโพเนนต์ TPdf ของคุณ

ขั้นตอนที่ 3: โหลด PDF แรกของคุณ

การโหลด PDF แบบง่าย:

// โหลดไฟล์ PDF
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Pages: ' + 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('search term');
  if Position >= 0 then
    ShowMessage('Found at position: ' + IntToStr(Position))
  else
    ShowMessage('Not found');
end;

สร้าง PDF ใหม่

// สร้าง PDF ใหม่พร้อมข้อความ
Pdf1.CreateDocument;
Pdf1.Compressed := True; // เปิดใช้งานการบีบอัดสตรีม
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 ขนาดหลาย GB หรือแหล่งข้อมูลจากระยะไกล / ฐานข้อมูล ให้ใช้ 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 Fit Mode)

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;

// Switching to a different page clears the highlight automatically

ขั้นตอนที่ 10: เอาต์พุตสำหรับจัดเก็บแบบ PDF/A

SaveAsPdfA จะประมวลผลการบันทึกพื้นฐานเพิ่มเติมด้วย incremental update ที่แทรก XMP metadata stream, sRGB ICC OutputIntent และ document catalog ที่อัปเดตแล้ว:

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

// ตรวจสอบความสอดคล้อง (conformance) ของเอกสารที่รับเข้ามา
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('Not PDF/A');
end;

ขั้นตอนถัดไป