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

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

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

ابدأ الدورة

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

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



1. Apache PDFBox - إنشاء وتحرير منخفض المستوى

Apache PDFBox هي مكتبة مفتوحة المصدر (ترخيص Apache 2.0) تتيح إنشاء مستندات PDF من الصفر، بالإضافة إلى التحرير واستخراج النص وتعبئة النماذج. الميزة الرئيسية هي التحكم الكامل في المحتوى: أنت تعمل مع كائنات المستند مباشرة.

مثال على إنشاء PDF بسيط:

import org.apache.pdfbox.pdmodel.*;import org.apache.pdfbox.pdmodel.font.PDType1Font;import java.io.IOException;

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

try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) { contentStream.setFont(PDType1Font.HELVETICA_BOLD, 14); contentStream.beginText(); contentStream.newLineAtOffset(100, 700); contentStream.showText("مرحبًا، عالم PDFBox!"); contentStream.endText(); }

document.save("output.pdf"); System.out.println("تم إنشاء PDF!"); } }}

متى تستخدم: إذا كنت بحاجة إلى تحكم دقيق في كل عنصر (على سبيل المثال، لتوليد رسوم بيانية معقدة أو تعبئة نماذج). غير مناسب للكميات الكبيرة من النص دون تنسيق مسبق.



2. iText - القوة التجارية للتقارير المعقدة

iText هو المعيار الفعلي في الصناعة. يوجد في نسختين: iText 7 Community (AGPL) و iText 7 Commercial (ترخيص تجاري). تدعم المكتبة تحويل HTML إلى PDF، إنشاء نماذج تفاعلية، التوقيعات الرقمية، التشفير وأكثر من ذلك بكثير.

مثال على توليد PDF مع جدول:

import com.itextpdf.kernel.pdf.*;import com.itextpdf.layout.*;import com.itextpdf.layout.element.*;

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

document.add(new Paragraph("التقرير الشهري")); Table table = new Table(2); table.addCell("المؤشر"); table.addCell("القيمة"); table.addCell("الإيراد"); table.addCell("1,250,000 روبل"); table.addCell("المصروف"); table.addCell("890,000 روبل"); document.add(table);

document.close(); System.out.println("التقرير جاهز!"); }}

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



3. JasperReports - التوليد بناءً على قوالب JRXML

JasperReports ليست مجرد مكتبة، بل نظام بيئي كامل لإنشاء التقارير. تصف القالب بتنسيق XML (أو عبر محرر مرئي Jaspersoft Studio)، وتملأ المكتبة البيانات من قاعدة البيانات أو المجموعات أو JSON. يمكن تصدير النتيجة إلى PDF، Excel، HTML، CSV وصيغ أخرى.

مثال على تعبئة قالب برمجيًا:

import net.sf.jasperre                    

توصيات