الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

توليد ملفات pdf بواسطة iText - الجزء الأول

بدأه herch في 6 ديسمبر 2009 · 7 رد · 1,860 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

تم تعديل هذه المشاركة بواسطة herch في 6 ديسمبر 2009 في 02:14

3
#2

وهذا تطبيق بسيط لما قيل

post-181903-12600629758192_thumb.png

عند الضغط على الزر، يتم كتابة محتوى الJTextArea إلى ملف pdf. هذا كود الضغط على الزر

try {
	String fileName = txtFileName.getText();
	if (!fileName.endsWith(".pdf")) {
		fileName += ".pdf";
	}
	String content = textArea.getText();
	Document doc = new Document();
	PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(fileName));
	doc.open();
	doc.add(new Paragraph(content));
	doc.close();
	JOptionPane.showMessageDialog(rootPane, "File generated successfully");
} catch (FileNotFoundException ex) {
	ex.printStackTrace();
} catch (DocumentException ex) {
	ex.printStackTrace();
}

PdfEditor.java.zip

1
#3

جزاك الله خيرا .

هل يمكن تطوير البرنامج بحيث يمكن تمرير مسار صفحة jsp أو html ليحولها البرنامج إلى pdf ويعرضها مباشرة في نافذة أخرى في نفس البرنامج ، أو يجعل برنامج آخر يعرضها مباشرة بعد التحويل .

تم تعديل هذه المشاركة بواسطة rohaili في 6 ديسمبر 2009 في 12:00

300_130.gif

#4

أظن ذلك ممكن، لكني بدأت للتو في تعلم هذه المكتبة لذلك لا أعرف كل إمكانياتها

--------------------------------

هناك مكتبة جيدة وسهلة الإستعمال لعمل parsing لملفات html وهي htmlparser، إذا كان الأمر يهمك

http://htmlparser.sourceforge.net

تم تعديل هذه المشاركة بواسطة herch في 6 ديسمبر 2009 في 15:01

#5

قيمت الموضوع كخمسة نجوم .. لانك جدير بذلك اخي الكريم ...

جاري القراءة .... و العودة إن شاء الله قريباً ... :)

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#6

:ty:

هذه فقط البداية، فالمكتبة تتيح أشياء كثيرة، لكن يجب أن أتعلمها أولا :D

#7

اتمنى ان نعمل على لإكتشافها معاً ... فقط حينما تخف عندي زحمة الدوام ... إن شاء الله في نهاية الاسبوع (إذا بقي لي شيء حتى ذلك الوقت :) )

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#8

جزاك الله خيرا .

300_130.gif

مواضيع مشابهة