Artikel Teknis

Membangun Pemirsa PDF di Delphi dengan PDFium Component

PDFium Component menyediakan dua komponen yang bekerja bersama: TPdf mengelola dokumen dan TPdfView merender halaman ke kontrol VCL. Ketika Anda menghubungkan keduanya dan mengatur Pdf.Active := True, tampilan segera memperbarui kontennya. Semua logika navigasi dan zoom mengalir dari sana

Menyambungkan TPdf ke TPdfView saat pembuatan form

Jatuhkan TPdf dan TPdfView ke form pada waktu desain. Kemudian di FormCreate, tunjuk PdfView.Pdf ke instance Pdf Anda dan pilih mode fit awal:

procedure TFormMain.FormCreate(Sender: TObject);
begin
  // Pdf and PdfView were dropped at design time.
  PdfView.Pdf := Pdf;                 // the view paints whatever this document holds
  PdfView.FitMode := pfmFitWidth;     // start the user at a sensible zoom
end;

Anda tidak perlu memanggil refresh atau repaint secara manual setelah mengatur properti ini; tampilan akan menampilkan konten yang benar segera setelah Pdf.Active menjadi true

Membuka dokumen dan menangani kegagalan senyap

Pdf.Active := True tidak pernah memunculkan pengecualian. Jika file tidak dapat dibuka, misalnya karena rusak atau dilindungi kata sandi yang tidak sesuai, Active tetap false. Selalu periksa setelah menetapkan:

procedure TFormMain.OpenDocument(const FileName: string);
begin
  Pdf.FileName := FileName;
  Pdf.Active := True;                 // never raises; failure leaves Active = False
  if not Pdf.Active then
  begin
    ShowMessage('Could not open ' + FileName);
    Exit;
  end;
  UpdatePageLabel;
end;

Membuka dokumen yang dilindungi kata sandi

Ketika file memerlukan kata sandi, tetapkan Pdf.Password sebelum mengaktifkan:

procedure TFormMain.OpenWithPassword(const FileName, Password: string);
begin
  Pdf.FileName := FileName;
  Pdf.Password := Password;
  Pdf.Active   := True;
  if not Pdf.Active then
    ShowMessage('Wrong password or damaged file');
end;

Navigasi halaman dan label status

Navigasi adalah pengaturan Pdf.PageNumber, yang merupakan bilangan bulat berbasis 1. Tampilan langsung merender ulang:

procedure TFormMain.GoToPage(Page: Integer);
begin
  if not Pdf.Active then Exit;
  Pdf.PageNumber := Max(1, Min(Page, Pdf.PageCount));
  UpdatePageLabel;
end;

procedure TFormMain.btnFirstClick(Sender: TObject);  begin GoToPage(1);                      end;
procedure TFormMain.btnPrevClick(Sender: TObject);   begin GoToPage(Pdf.PageNumber - 1);     end;
procedure TFormMain.btnNextClick(Sender: TObject);   begin GoToPage(Pdf.PageNumber + 1);     end;
procedure TFormMain.btnLastClick(Sender: TObject);   begin GoToPage(Pdf.PageCount);          end;

procedure TFormMain.UpdatePageLabel;
begin
  lblPage.Caption := Format('Page %d of %d', [Pdf.PageNumber, Pdf.PageCount]);
end;

Zoom dan mode fit

PDFium Component menawarkan level zoom numerik dan mode fit yang telah ditentukan sebelumnya. FitMode mengesampingkan Zoom ketika aktif; set ke pfmNone untuk kembali ke zoom manual:

// Named fit modes
PdfView.FitMode := pfmFitWidth;     // fills the view horizontally
PdfView.FitMode := pfmFitPage;      // whole page visible at once
PdfView.FitMode := pfmNone;         // use the Zoom property instead

// Manual zoom
PdfView.Zoom := 1.0;   // 100 %
PdfView.Zoom := 1.5;   // 150 %
PdfView.Zoom := 0.75;  // 75 %

// Convenience: match page width exactly to the current view width
procedure TFormMain.PageWidthZoom;
begin
  PdfView.FitMode := pfmNone;
  if Pdf.Active and (Pdf.PageWidth > 0) then
    PdfView.Zoom := PdfView.Width / Pdf.PageWidth;
end;

Untuk mengunduh komponen dan mulai membangun pemirsa Anda sendiri, kunjungi halaman produk Download PDFium Component

Contoh kode tambahan

// seed a zoom readout from the fit-to-width value of the current page
var
  FitPercent: Double;
begin
  FitPercent := PdfView.PageWidthZoom[PdfView.PageNumber];
  ZoomEdit.Text := Format('%.0f%%', [FitPercent]);
end;