PDA

View Full Version : pdf



lilashad
سه شنبه 06 تیر 1391, 07:52 صبح
سلام
من می خوام یه کلاس بنویسم که بتونه محتوی جدول های فرم ها را به فایل pdfتبدیل کنه کسی می تونه راهنمای کنه؟
به نظر شما کتابخانه iTextجوابگو هست؟
سپاس

همایون افشاری
سه شنبه 06 تیر 1391, 13:36 عصر
منظورت از محتوی جدول های فرم ها دقیقا چیه.
itext یه API جامع برای کار با PDF با جاواست.

lilashad
چهارشنبه 07 تیر 1391, 07:38 صبح
ممنون از توجه تان
من در پروژه ام یکسری فرم دارم وجدول می خوام روی فرم ها وجداول دکمه بگذارم که کاربر با زدن آن بتوان محتوی جداول وفرم ها را به صورت فایل PDFدریافت کند تونستم فایل PDf بسازم اما نمی تونم اطلاعات جداول را در آن نمایش بدهم
سپاس

spiderman200700
چهارشنبه 07 تیر 1391, 12:47 عصر
سلام
من قبلا یه متد برای این کار نوشته بودم.
امیدوارم جواب بده.

public void componentToPDF() {
Document document = new Document();
try {
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("file.pdf"));
document.open();

PdfContentByte contentByte = writer.getDirectContent();
int Wheader = table.getTableHeader().getWidth();
int Hheader = table.getTableHeader().getHeight();
PdfTemplate header = contentByte.createTemplate(Wheader, Hheader);
Graphics2D headergraphics = header.createGraphics(Wheader, Hheader);
table.getTableHeader().paint(headergraphics);

int Wbody = table.getWidth();
int Hbody = table.getHeight();
PdfTemplate body = contentByte.createTemplate(Wbody, Hbody);
Graphics2D bodygraphics = body.createGraphics(Wbody, Hbody);
table.paint(bodygraphics);

headergraphics.dispose();
bodygraphics.dispose();

contentByte.addTemplate(header, 0, Hbody);
contentByte.addTemplate(body, 0, 0);
} catch (DocumentException de) {
System.err.println(de.getMessage());
} catch (IOException ioe) {
System.err.println(ioe.getMessage());
}
document.close();
}
فقط باید کتابخانه ی itext به پروژه add کنی.
اگه به جای table نام سایر component ها رو بنویسی و یه کمی هم کد ها رو تغیر بدی ، میتونی تمام کامپوننت ها رو به PDF تبدیل کنی.
حتی میتونی کل JFrame و تمام component های روش رو به PDF تبدیل کنی.
موفق باشی

spiderman200700
چهارشنبه 07 تیر 1391, 16:04 عصر
اگه table داخل یه JScrollPane قرار داره کافیه به جای کد قبل، از کد زیر استفاده کنید:
public void componentToPDF() {
Document document = new Document();
try {
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("file.pdf"));
document.open();
PdfContentByte contentByte = writer.getDirectContent();

int Wbody = jsp.getWidth();
int Hbody = jsp.getHeight();
PdfTemplate body = contentByte.createTemplate(Wbody, Hbody);
Graphics2D bodygraphics = body.createGraphics(Wbody, Hbody);
jsp.paint(bodygraphics);

bodygraphics.dispose();
contentByte.addTemplate(body, 0, 0);
} catch (DocumentException de) {
System.err.println(de.getMessage());
} catch (IOException ioe) {
System.err.println(ioe.getMessage());
}
document.close();
}
اسم شی JScrollPane در اینجا jsp فرض شده.

lilashad
یک شنبه 11 تیر 1391, 10:19 صبح
با سلام وسپاس به خاطر جوابها
اگه من یه select داشته باشم وبخوام header و محتوی جدول در pdf را با آن مشخص کنم چه کنم؟
سپاس

spiderman200700
یک شنبه 11 تیر 1391, 12:10 عصر
سلام.
به نظر من در اینجور مواقع بهتره از Report استفاده کنید. و خروجی Report رو PDF قرار بدید.

spiderman200700
یک شنبه 11 تیر 1391, 12:13 عصر
در اینجور مواقع کار کردن با JsperReport و iReport نسبت به itext خیلی راحتتره.

lilashad
دوشنبه 12 تیر 1391, 17:40 عصر
سلام دوباره فارسی در pdfذخیره نمی شه
چکار کنم؟؟؟؟؟؟؟
در واقعه محتوی فارسی جداول رادر فایل pdf نمایش نمی ده
سپاس

spiderman200700
جمعه 23 تیر 1391, 16:43 عصر
فارسی نویسی در PDF با استفاده از جاوا مشکل منم هست.

امیدوارم کسی پیدا بشه این مشکل رو حل کنه

lilashad
دوشنبه 09 مرداد 1391, 09:36 صبح
من برای فارسی نویسی ازکد زیر استفاده کردم تونستم فارسی ذخیره کنم
BaseFont unicode = BaseFont.createFont(fontUrl, BaseFont.IDENTITY_H, true);
Font font = new Font(unicode, fontSize);
باید متغییر font را بعنوان پارامتر دوم به شی Paragraph پاس بدیم