iText 7 لجافا: الدليل الشامل لإنشاء وتعديل ملفات PDF
مكتبة iText 7 هي مكتبة قوية مفتوحة المصدر (برخصة AGPL) للغة Java، مصممة لإنشاء مستندات PDF ومعالجتها وعرضها برمجيًا. تعتبر هذه المكتبة الجيل التالي من المكتبة الشهيرة iText 5، وتتميز ببنية معيارية مُعاد تصميمها بالكامل تركز على الأداء العالي والمرونة وسهولة الاستخدام. تتيح iText 7 للمطورين حل مجموعة واسعة من المهام: بدءًا من إنشاء الفواتير والتقارير البسيطة، وصولاً إلى إنشاء مستندات معقدة ذات أهمية قانونية تحتوي على توقيعات رقمية ونماذج وبيانات وصفية.
لماذا تحتاج إلى iText 7؟ في عالمنا اليوم، يُعد PDF الشكل العالمي لتبادل المستندات، مما يضمن ثبات العرض على جميع الأجهزة. إن إنشاء ملفات PDF يدويًا أمر شاق وغير فعال، خاصة عند التعامل مع كميات كبيرة من البيانات. تعمل iText 7 على أتمتة هذه العملية، مما يمنح مطوري Java تحكمًا كاملاً في كل جانب من جوانب المستند: من إضافة النصوص والصور إلى إنشاء النماذج التفاعلية وإدارة صلاحيات الوصول. لا غنى عن هذه المكتبة في أنظمة إدارة المستندات والتجارة الإلكترونية والقطاع المصرفي وأي تطبيق يتطلب إنشاء أو معالجة ملفات PDF.
تدعم المكتبة جميع مواصفات PDF الحديثة، بما في ذلك PDF 2.0. كما توفر وحدات إضافية (Add-ons) للعمل مع تحويل HTML (pdfHTML)، والتعرف البصري على الأحرف (pdfOCR)، وإنشاء رسومات SVG (pdfSVG)، ومعالجة الصور (pdfImage). من المهم ملاحظة أن iText 7 متاحة تحت ترخيص مزدوج: AGPL (الذي يتطلب فتح الكود المصدري لتطبيقك) وترخيص تجاري (للاستخدام الاحتكاري).
طريقة التثبيت
لتثبيت iText 7 في مشروع Java الخاص بك، استخدم نظام بناء Maven أو Gradle. فيما يلي الأمر الدقيق لإضافة التبعيات إلى ملف pom.xml (لـ Maven).
<!-- pom.xml -->
<dependencies>
<!-- الوحدة الأساسية لـ iText 7 -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>8.0.4</version> <!-- تحقق من أحدث إصدار على Maven Central -->
<type>pom</type>
</dependency>
</dependencies>
لـ Gradle (ملف build.gradle):
implementation 'com.itextpdf:itext7-core:8.0.4'
إذا كنت تحتاج فقط إلى وحدات معينة (مثل kernel أو layout أو io)، يمكنك إضافتها بشكل منفصل:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>8.0.4</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>8.0.4</version>
</dependency>
بداية سريعة: مثال عملي مصغر
يقوم الكود التالي بإنشاء مستند PDF بسيط يحتوي على نص "Hello, World!" وحفظه في ملف باسم HelloWorld.pdf.
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import java.io.FileNotFoundException;
public class HelloWorld {
public static void main(String[] args) throws FileNotFoundException {
// 1. إنشاء PdfWriter لكتابة البيانات إلى الملف
PdfWriter writer = new PdfWriter("HelloWorld.pdf");
// 2. إنشاء PdfDocument - الكائن الذي يمثل مستند PDF نفسه
PdfDocument pdf = new PdfDocument(writer);
// 3. إنشاء Document - كائن عالي المستوى لإضافة العناصر (نصوص، جداول، إلخ)
Docum