Meng-ekstrak teks dari file PDF
Misalkan kita punya file PDF (bernama Source.pdf) seperti ini
Nah, kemudian kita mau ambil isi teksnya. Ada library yang free (namun tidak sempurna, nanti akan saya beritahu alasannya) yang bisa mengambil teks dari pdf kemudian menyimpannya dalam file txt. Library tersebut bisa di-download di http://www.codeproject.com/KB/cs/PDFToText.aspx. Di halaman tersebut, download baik source files maupun demo project.
Setelah download, ekstrak dua file zip tersebut. Di dalam PDFToText_bin.zip, ada file itextsharp.dll dan SharpZipLib.dll. Nah, dua file ini yang akan kita jadikan reference ke project kita. Kemudian di dalam PDFToText_src.zip, ada file PDFParser.cs yang nanti akan kita add (existing item) ke project kita.
Oke, sekarang ke contoh project. Misalkan kita buat sebuah aplikasi WPF (pertama-tama dengan menggunakan Ekspression Blend, tentunya).
Buatlah sebuah Button dan sebuah TextBlock pada Window1 (di dalam LayoutRoot).
Percantiklah tampilan (mohon maklum kalau tampilan yang saya buat nggak cantik ya..)
Kemudian, klik kiri di tombol Ekstrak, setelah itu di window Properties, klik icon Events
Di pilihan Events, double-click text box di sebelah Click.
Sekarang kita beralih ke Visual Studio (yang terbuka secara otomatis gara-gara kita double-click tadi). Nah, sebelum ngapa-ngapain di Visual Studio, lakukan langkah-langkah berikut:
- Add reference ke itextsharp.dll dan SharpZipLib.dll yang ada di dalam PDFToText_bin.zip.
- Add existing item ke file PDFParser.cs yang ada di dalam PDFToText_src.zip.
- Add existing item ke file pdf yang akan kita ekstrak isinya, yaitu Source.pdf.
Berikut screen-shot nya…
Add reference
Add existing item
Nahh, kalau step-step tadi udah selesai, berarti di Solution Explorer akan tampil seperti ini:
Gunakan cara yang sama untuk menambahkan file Source.pdf. Namun, agar file Source.pdf ter-copy secara otomatis ke folder bin\Debug, maka kita harus memilih “Copy always” pada pilihan Copy to Output Directory. Caranya, klik kiri Source.pdf yang ada di Solution Explorer, kemudian di window Properties, set properti Copy to Output Directory menjadi Copy Always.
Setelah itu, buka Window1.xaml. TextBlock kita belum punya nama. Beri nama TextBlock kita dengan textBlockResult. Caranya, klik kiri TextBlock kemudian isi property Name di window Properties.
Oke.. sekarang kita menuju code. Buka Window1.xaml.cs (sebenernya udah kebuka dari tadi sih..). Pertama-tama, kita import dulu namespace System.IO dan PdfToText.
using System.IO;
using PdfToText;
Di dalam handler-nya button click, atau dengan kata lain di method Button_Click yang dibuatin dari sananya, tuliskan code berikut:
//Ekstrak isi teks di Source.pdf kemudian menyimpannya dalam Result.txt
PDFParser pdfParser = new PDFParser();
pdfParser.ExtractText("Source.pdf", "Result.txt");
//Supaya teks di dalam Result.txt tertulis di text block
TextReader reader = new StreamReader("Result.txt");
textBlockResult.Text = reader.ReadLine();
Nahh, coba sekarang kita test hasilnya.
Klik tombol Ekstrak, maka inilah hasilnya:
Nahh… hasilnya bagus kalau kebetulan teksnya sederhana. Kalau agak rumit.. misalnya isi pdf nya seperti ini:
Maka, tidak ada teks yang berhasil diambil barang sehuruf pun..
Ada yang punya solusinya?
Sumber: http://www.codeproject.com/KB/cs/PDFToText.aspx