iText هي مكتبة تسمح بتوليد ملفات pdf، كما أنها تسمح بالتعامل مع ملفات pdf موجودة مسبقا وتعديلها. إذا سبق واستعملتم jasperreport للحصول على تقارير بصيغة pdf، فهذا يعني أنكم قد استعملتم iText، لأن jasperreport يستعملها لتوليد ملفات pdf.
ماذا أسمع؟ لم يسبق أن استعملتم jasperreport!! إذا ماذا تنتظرون، إقرؤوا بسرعة موضوع الاخ محمد فتحي دروس بسيطة ومفيدة عن التقارير Jasperreport
نعود إلى موضوعنا، أولا يجب أن يكون عندكم jdk متبث في الجهاز ( إذا لم يكن كذلك فهذا يعني أنك في القسم الخطأ :D )، وطبعا مكتبة iText التي يمكنكم تحميلها من هذا الرابط: http://www.lowagie.c.../download.html، سنحتاج فقط لملف iText-2.1.7.jar
الآن بعد أن حملتم المكتبة، يستحسن إحداث مجلد جديد حيث سنضع الأمثلة، فلنسمه itext-examples، ولا تنسوا وضع المكتبة في هذا المجلد.
سنبدأ الآن المثال الأول :evil:
أولا، نقوم بإنشاء كائن من صنف Document، هذه الكلاس تمثل الوثيقة التي سنعمل عليها، والتي سنضيف إليها النص وما إلى ذلك
نعمل أولا الimport اللازم
import com.lowagie.text.Document;
Document pdfDoc = new Document();
الآن لدينا الوثيقة، وهي موجودة في الذاكرة، لكن ما نريده هو ملف pdf موجود في القرص الصلب، لذلك فإننا ننشئ كائنا من صنف PdfWriter ونربطه مع الوثيقة التي أنشأنا سابقا
import com.lowagie.text.pdf.PdfWriter; import java.io.FileOutputStream;
PdfWriter writer = PdfWriter.getInstance(pdfDoc, new FileOutputStream("Hello.pdf"));الargument الأول يمثل الوثيقة التي نعمل عليها، الargument الثاني يمثل الOutputStream الذي سنستعمله لكتابة الملف pdf في القرص الصلب.
الآن انتهينا من الإستعدادت، ونبدأ بملء ملفنا، سنكتفي في المثال بإضافة جملة بسيطة فقط، مازلنا في مرحلة التسخينات :D
أولا نفتح الوثيقة التي أنشأناها من قبل
pdfDoc.open();
ثم نقوم بإضافة جملة
import com.lowagie.text.Phrase;
pdfDoc.add(new Phrase("My first phrase with iText."));الميثود add الموجودة في Document تنتظر كائنا من أي صنف يقوم بعمل implement للinterface Element، والكلاس Phrase هي أحد هذه الكلاسات، وهي كما يوحي إسمها تمثل جملة، كما أن هناك مثلا الكلاس Paragraph التي تمثل ...... فقرة طبعا.
الآن بما أننا انتهينا من الكتابة، فيجب علينا إقفال الوثيقة
pdfDoc.close();
وهذا المثال كاملا
import com.lowagie.text.Document;
import com.lowagie.text.Phrase;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;
import java.io.FileOutputStream;
public class FirstExample {
public static void main(String[] args) {
Document pdfDoc = new Document();
try {
PdfWriter writer = PdfWriter.getInstance(pdfDoc, new FileOutputStream("Hello.pdf"));
pdfDoc.open();
pdfDoc.add(new Phrase("My first phrase with iText."));
pdfDoc.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}كما تلاحظون فقد وضعنا بعض الكود داخل try/catch، وذلك لأن PdfWriter.getInstance و pdfDoc.add ترفعان exeption من نوع DocumentException، كما أن الconstructor الخاص بFileOutputStream يرفع exception من نوع FileNotFoundException
compile
C:\itext-examples>javac -classpath iText-2.1.7.jar FirstExample.java
run
C:\itext-examples>java -classpath iText-2.1.7.jar;. FirstExample
