Cara Konversi file HTML ke PDF di Delphi dan VB.Net

Jika di Delphi ada komponen Gnostice EdocEngine yang dipadu dengan THMTLViewer dan di VB.Net ada komponen Ice Blue, tapi di artikel ini penulis tidak menggunakan 2 komponen tersebut karena di samping berbayar hasilnya kurang begitu bagus. Sebagai penggantinya anda bisa memakai wkhtmltopdf. Aplikasi tersebut mempunyai kelebihan yaitu bisa running di console sehingga anda bisa mengkonversi HTML ke PDF secara diam-diam tanpa sepengetahuan user.

Langkah Instalasi

Pada tahap trial untuk memudahkan memanggil file eksekusi wkhtmltopdf.exe anda bisa mengarahkan folder instalasi ke folder output aplikasi. Buka file instalasi lalu pada tahap berikut klik browse lalu setting folder instalasi sesuai dengan folder output aplikasi anda.

Instalasi wkhtmlpdf

Perintah Dasar

wkhtmltopdf [parameters] [input fle] [output file]

Contoh: wkhtmltopdf –quiet file:///d:/test.html d:\test.pdf

Meski bisa dengan menyebutkan pathnya langsung untuk input file penulis sarankan menggunakan format file url.

Konversi HTML ke PDF dengan Delphi

Seperti pemanggilan file exe lainnya anda bisa menggunakan perintah shellexecute, tetapi pada tutorial ini penulis menggunakan komponen TJvCreateProcess dari JVCL karena di samping lebih mudah juga bersifat synchronous.

Buat fungsi berikut untuk mengubah file path ke file url


function FilePathToURL(const FilePath: string): string;
var
  BufferLen: DWORD;
begin
  BufferLen := INTERNET_MAX_URL_LENGTH;
  SetLength(Result, BufferLen);
  OleCheck(UrlCreateFromPath(PChar(FilePath), PChar(Result), @BufferLen, 0));
  SetLength(Result, BufferLen);
end;

Buat prosedur konversi html ke pdf di form anda:


procedure TForm1.PrintHtmlToPDf(filename,outputfile: string);
var wkhtmlpdfbin,cmdcommand:string;
encodeFilename:string;
begin
encodeFilename:=FilePathToURL(filename);
wkhtmlpdfbin:=ExtractFilePath(ParamStr(0))+'wkhtmltopdf\bin\wkhtmltopdf.exe';
jvcrproc1.StartupInfo.DefaultPosition:=False;
    jvcrproc1.StartupInfo.DefaultSize:=False;
    jvcrproc1.StartupInfo.DefaultWindowState:=False;
    jvcrproc1.StartupInfo.ShowWindow:=swHide;
    cmdcommand:=wkhtmlpdfbin+' --quiet '+Encodefilename+' '+outputfile;
    jvcrproc1.CommandLine:=cmdcommand;
    jvcrproc1.WaitForTerminate:=True;
    jvcrproc1.Run;
     WaitForSingleObject(jvcrproc1.ProcessInfo.hProcess,INFINITE);// tunggu sampai konversi selesai
     ShowMessage('Cetak PDF berhasil');
Shellexecute(self.Handle,PChar('open'),PChar(outputfile),nil,nil,SW_SHOWNORMAL);//buka file PDF

end;

Eksekusi prosedur di atas misal saat klik button:


procedure TForm1.btn1Click(Sender: TObject);
begin
if dlgOpen1.Execute then
  if dlgSave1.Execute then
  PrintHtmlToPDf(dlgOpen1.FileName,dlgSave1.FileName);
end;

Konversi HTML ke PDF di VB.NET

Taruh komponen Button, Process, OpenFileDialog dan SaveFileDialog di Form lalu buat perintah berikut misal saat button klik:


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' Process1.StartInfo.FileName = Application.ExecutablePath
        If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
                Dim uri As New System.Uri(OpenFileDialog1.FileName)
                Dim wkhtmltopdfexe = Application.StartupPath & "\wkhtmltopdf\bin\wkhtmltopdf.exe "
                Process1.StartInfo.UseShellExecute = False
                Process1.StartInfo.FileName = wkhtmltopdfexe

                Process1.StartInfo.Arguments = "--quiet " & uri.AbsoluteUri & " " & SaveFileDialog1.FileName
                Process1.Start()
                Process1.WaitForExit()
                MsgBox("Konversi selesai")
                Process1.StartInfo.UseShellExecute = True
                Process1.StartInfo.FileName = SaveFileDialog1.FileName
                Process1.Start()

            End If
        End If
     

    End Sub

Untuk lebih lengkapnya anda bisa download attachment yang penulis sertakan di bawah.

Attachments

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 *