Cara Membuka PDF di Delphi dan VB.Net

Secara default jika anda mengeksekusi perintah shellexecute lalu di parameternya diisi dengan nama file pdf, baik di Delphi atau VB.Net secara otomatis membuka file pdf tersebut melalui aplikasi default PDF Reader yang sudah diinstall.

Tetapi cara tersebut punya kelemahan karena:

  1. Anda harus menginstall PDF Reader
  2. Tidak bisa diembed(ditanam) di aplikasi.

Jika anda kesulitan mendapatkan komponen PDF Reader ada cara yang sangat mudah menanamkan PDF Reader tersebut ke dalam aplikasi yaitu dengan memakai Sumatra PDF portable.  Di command parameter Sumatra PDF terdapat parameter -plugin yang entah kenapa di dokumentasi mereka sekarang sudah dihilangkan.  Adapun parameter -plugin tersebut di isi dengan window handle form anda.  Dan berikut adalah cara memanggil SumatraPDF.exe di Delphi dan VB.Net

Cara Membuka PDF di Delphi

Anda bisa menggunakan perintah ShellExecute atau CreateProcess.  Buat prosedur eksekusi proses di Delphi anda seperti berikut:


procedure ExecNewProcess(ProgramName,ParamCmd : String;wait:Boolean=False);
var
  StartInfo  : TStartupInfo;
  ProcInfo   : TProcessInformation;
  CreateOK   : Boolean;
begin

  { fill with known state }
  FillChar(StartInfo,SizeOf(TStartupInfo),#0);
  FillChar(ProcInfo,SizeOf(TProcessInformation),#0);
  StartInfo.cb := SizeOf(TStartupInfo);

  CreateOK := CreateProcess(nil,PChar(ProgramName+ ' '+Paramcmd), nil, nil,False,
              CREATE_NEW_PROCESS_GROUP+NORMAL_PRIORITY_CLASS,
              nil, nil, StartInfo, ProcInfo);

  { check to see if successful }
  if CreateOK then
    begin
     
      if Wait then
        WaitForSingleObject(ProcInfo.hProcess, INFINITE);
    end
  else
    begin
      ShowMessage('Unable to run '+ProgramName);
     end;
   CloseHandle(ProcInfo.hProcess);
  CloseHandle(ProcInfo.hThread);
end;

Taruh file Sumatra PDF portabel menjadi satu direktori dengan aplikasi anda lalu tambahkan perintah berikut(misal saat form create):


procedure TForm1.FormCreate(Sender: TObject);
begin
ExecNewProcess(ExtractFilePath(ParamStr(0))+'SumatraPDF.exe','-plugin '+
IntToStr(Self.Handle)+' d:\test.pdf');
//Jika menggunakan shellexecute
//ShellExecute(Handle,PChar('open'),
//PChar(ExtractFilePath(ParamStr(0))+'SumatraPDF.exe'),
//PChar('-plugin '+Inttostr(self.Handle)+' d:\test.pdf'),nil,SW_SHOWNORMAL);
end;

Anda dapat menambahkan parameter-parameter lain misal:
-zoom “fit page” -view “facing” dan lain sebagainya. Jadi perintahnya menjadi:


ExecNewProcess(ExtractFilePath(ParamStr(0))+'SumatraPDF.exe','-plugin '+
IntToStr(Self.Handle)+' -zoom "fit page" -view "facing"'+' d:\test.pdf');

Untuk lebih lengkapnya mengenai command line arguments tersebut silahkan lihat di dokumentasi.

Cara Membuka PDF di VB.Net

Sama seperti halnya Delphi, di VB.Net anda bisa menggunakan perintah ProcessStartInfo seperti berikut:


Public Sub CallPDf(parentHandle As System.Windows.Forms.Control, filename As String)

        Dim fileinfo As New System.IO.FileInfo(filename)
        If fileinfo.Exists Then
            Dim ptr As IntPtr = parentHandle.Handle
            Dim startinfo As New ProcessStartInfo(Application.StartupPath & "/SumatraPDF.exe")
            startinfo.WorkingDirectory = fileinfo.DirectoryName
            Dim namefile As String = fileinfo.Name
            startinfo.Arguments = " -plugin " & ptr.ToString & " " & namefile
            Dim proc As New Process
            proc.StartInfo = startinfo
            proc.Start()
            
        End If

 End Sub

Seperti halnya di Delphi, setelah parameter plugin anda bisa menambahkan parameter-parameter lainnya.

Dan berikut adalah hasil eksekusi perintah tersebut di mana jendela PDF di tanamkan di Panel bukan di Form seperti contoh yang ada di atas.

Cara Membuka PDF di Delphi

anasmbahdien

Seorang programmer yang menguasai bahasa pemograman Delphi, VB.NET, PHP dan Android. Untuk hasil karya kunjungi mogotekno.com

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *