توليد PDF في Java: نظرة على مكتبات iText، Apache PDFBox، OpenPDF

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

توليد PDF في Java: نظرة على أفضل المكتبات



يعد توليد مستندات PDF من المهام النمطية في تطوير Java للمؤسسات. التقارير، الفواتير، العقود، الشهادات - كل هذا يمكن إنشاؤه برمجياً بسهولة. في هذه المقالة، سنستعرض ثلاث مكتبات الأكثر شيوعاً للعمل مع PDF في Java: iText، Apache PDFBox و OpenPDF. سنحلل إمكانياتها، مميزاتها، ونقدم أمثلة عملية للأكواد.



1. iText - المعيار القوي والتجاري



iText هو المعيار الفعلي لإنشاء PDF في Java. المكتبة موجودة منذ عام 2000 وتقدم أوسع نطاق من الوظائف: من النص البسيط إلى النماذج المعقدة، العلامات المائية، التوقيعات الرقمية، والعمل مع PDF/A.



الترخيص: يتم توزيع iText بموجب ترخيص مزدوج. للمشاريع مفتوحة المصدر (AGPL) - مجاني، للاستخدام التجاري يتطلب شراء ترخيص.



مثال: إنشاء PDF بسيط مع جدول



import com.itextpdf.kernel.pdf.PdfDocument;import com.itextpdf.kernel.pdf.PdfWriter;import com.itextpdf.layout.Document;import com.itextpdf.layout.element.Cell;import com.itextpdf.layout.element.Paragraph;import com.itextpdf.layout.element.Table;import com.itextpdf.layout.property.UnitValue;

public class ItextExample { public static void main(String[] args) throws Exception { String dest = "example_itext.pdf"; PdfWriter writer = new PdfWriter(dest); PdfDocument pdfDoc = new PdfDocument(writer); Document document = new Document(pdfDoc);

// إضافة عنوان document.add(new Paragraph("تقرير المبيعات"));

// إنشاء جدول Table table = new Table(UnitValue.createPercentArray(3)).useAllAvailableWidth(); table.addHeaderCell(new Cell().add(new Paragraph("المنتج"))); table.addHeaderCell(new Cell().add(new Paragraph("الكمية"))); table.addHeaderCell(new Cell().add(new Paragraph("السعر")));

table.addCell(new Cell().add(new Paragraph("حاسوب محمول"))); table.addCell(new Cell().add(new Paragraph("10"))); table.addCell(new Cell().add(new Paragraph("1200 $")));

table.addCell(new Cell().add(new Paragraph("فأرة"))); table.addCell(new Cell().add(new Paragraph("50"))); table.addCell(new Cell().add(new Paragraph("25 $")));

document.add(table); document.close();

System.out.println("تم إنشاء PDF: " + dest); }}


مميزات iText: مجتمع ضخم، توثيق ممتاز، دعم السيناريوهات المعقدة (التوقيعات، النماذج، PDF/UA). العيوب: التكلفة العالية للترخيص التجاري.



2. Apache PDFBox - مجاني ومفتوح المصدر



Apache PDFBox هي مكتبة مجانية بالكامل بموجب ترخيص Apache 2.0. تتيح لك ليس فقط إنشاء PDF من الصفر، بل أيضاً تحرير المستندات الموجودة، استخراج النص، العمل مع النماذج والصور.



مثال: إنشاء مستند مع نص وصورة



import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.pdmodel.PDPage;import org.apache.pdfbox.pdmodel.PDPageContentStream;import org.apache.pdfbox.pdmodel.font.PDType0Font;import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;

import java.io.File;

public class PdfBoxExample { public static void main(String[] args) throws Exception { PDDocument document = new PDDocument(); PDPage page = new PDPage(); document.addPage(page);

PDPageContentStream contentStream = new PDPageContentStream(document, page);

// تحميل الخط (يلزم ملف خط) PDType0Font font = PDType0Font.load(document, new File("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf")); contentStream.setFont(font, 14); contentStream.beginText(); contentStream.newLineAtOffset(50, 700); conte

توصيات