Halaman

Selasa, 10 Agustus 2010

Create PDF file using C# and iTextSharp

iText is a library that allows you to generate PDF files on the fly, and it is an ideal library for developers looking to enhance web- and other applications with dynamic PDF document generation and/or manipulation. iText is not an end-user tool. Typically you won't use it on your Desktop as you would use Acrobat or any other PDF application. Rather, you'll build iText into your own applications so that you can automate the PDF creation and manipulation process.

The iText classes are very useful for people who need to generate read-only, platform independent documents containing text, lists, tables and images; or who want to perform specific manipulations on existing PDF documents.

Say we already have a C# project created with Microsoft Visual Studio, and want to generate a PDF file using iTextSharp. Below is my step:

1. Download itextsharp-5.0.2-dll.zip (1.2MB) from http://sourceforge.net/projects/itextsharp/files/
2. Extract the zip file to get itextsharp.dll file.
3. On Visual Studio, Add Reference to that file.
4. Open your source code and put this
using iTextSharp.text;
using iTextSharp.text.pdf;

5. Create a function like this:
private void generatePDF()
{
Document doc = new Document();
string dirPath = AppDomain.CurrentDomain.BaseDirectory + "pdf";
string pdfFile = dirPath + "\\" + "my.pdf";

PdfWriter writer = PdfWriter.GetInstance(doc, new System.IO.FileStream(pdfFile, System.IO.FileMode.Create));
writer.SetEncryption(PdfWriter.STRENGTH128BITS, "readpassw", "editpassw", PdfWriter.AllowCopy PdfWriter.AllowPrinting);

doc.Open();

doc.AddTitle("iTextSharp");
doc.AddSubject("Create Paragraph");
doc.AddCreator("iTextSharp");
doc.AddAuthor("We");
doc.AddTitle("My Title");

string tit = "This document using 128 bits encryption";
doc.Add(new Paragraph(tit, FontFactory.GetFont(FontFactory.HELVETICA, 20, 5,BaseColor.BLUE)));

Paragraph p = new Paragraph(new Chunk("iText is a library that allows you to generate PDF files on the fly", FontFactory.GetFont(FontFactory.HELVETICA, 10)));
p.Add("The most recent version is iText 5.0.3.");
p.Add("iText is an ideal library for developers looking to enhance web-");

p.Add(new Chunk("and other applications with dynamic PDF document generation and/or manipulation."));
p.Add(new Phrase("iText is not an end-user tool."));
p.Add(new Phrase("You'll build iText into your own applications to automate the PDF creation and manipulation process.", FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 18)));
doc.Add(p);

doc.NewPage();
p = new Paragraph(new Phrase("This is my second paragraph.", FontFactory.GetFont(FontFactory.TIMES_ITALIC, 11)));
p.Add("In short: the iText classes are very useful for people who need.");
doc.Add(p);
doc.Close();
}

6. Call that function and chek my.pdf file using your PDF reader.

Sabtu, 07 Agustus 2010

Boot on Ring

Seminggu yang lalu, saya berada sekitar 1000 km dari server sebut saja "DearServer". Perjalanan yang mengasyikkan bersama Hari, Suhendra, Teguh. Canda tawa, guyonan dan ide "andai-andai" pun mewarnai perjalanan kami saat melihat indahnya pemandangan, orang, mesin, makanan, bahkan sensor di bandara...bak komentator..dengan rileks dan tanpa beban menyampaikan pandangannya...

Kami beranjak meninggalkan DearServer pukul 05.40 dan tiba di remote area sekitar jam 16. Jam 20 memulai setup komputer, camera, cabling, konfigurasi LAN, tes koneksi internal dan ke internet via RG. Semua lancar dan response aplikasinya baik. Oh ya di DearServer ada rekan Salihin, yang setia menssuport kami, dan di server lokal ada rekan Iwan yang mendampingi. Dari testing aplikasi App2 kami masih menemui kendala. Jam telah menunjukkan hampir pukul 23 dan kami pun istirahat.

Esoknya kami mulai pelatihan internal dan laptop Vaio18 pun digunakan hingga jam 16. Jam 21, PR untuk App2 dilanjutkan. Untuk misi kali ini, ada 2 Aplikasi di DearServer yang harus dijalankan. App1 dan App2.
App1 terbuka untuk diakses via internet, sedangkan App2 khusus untuk intranet. App1 bisa diakses, namun tidak untuk App2. Koneksi VPN digunakan namun gagal koneksi ke App2. Routing dinamik dibuat dan App2 bisa diakses. Naah, sekarang saatnya mengganti dengan routing statis.
Saat membuat routing statis saya membuat IP yang sama (konflik) dalam server island, SSH pun terputus. Jam telah menunjukkan pukul 23, tak mungkin menelpon Salihin untuk datang mereset DearServer. Ide pun muncul andai bisa menelpon petugas untuk melakukan warm/cold boot server, andai ada tambahan NIC, atau andai ring telepon yang membuat Boot On Ring...next time kali yaaa.. Hmmmm...routing statis kan bisa dikerjakan besok pagi...kami melakukan finishing dan kembali pukul 01.

Kicau burung di pagi hari pun terdengar, suasana yang langka saat berada di kotanya DearServer, saat jalan pagi dan melihat pohon dan gunung yang masih tertutup embun...amazing deh...sementara Teguh menelpon Salihin untuk merestart DearServer. Jam 09, routing diberesin, dan semua OK..pada saat yang tepat... Sesuai jadwal, pelatihan eksternal pun dibuka oleh pak Edy dan kami melanjutkan dengan materi dan praktek pelatihan. Hal yang menyenangkan diperoleh dengan tidak adanya gangguan koneksi maupun hambatan pengoperasian aplikasi. Mission completed...dan perjalanan panjang menanti untuk eksekusi real-world.