توليد PDF في Kotlin: أفضل المكتبات وأمثلة الكود

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

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

ابدأ الدورة

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



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



1. iText - مكتبة قوية ومرنة



iText هي واحدة من أشهر المكتبات لإنشاء ومعالجة مستندات PDF على JVM. وهي تدعم التنسيق المعقد والجداول والصور والعلامات المائية والتشفير وغير ذلك الكثير. بالنسبة لـ Kotlin، تتوفر حزمة رسمية iText7 مع امتدادات Kotlin.



الإضافة (Gradle)

dependencies {    implementation("com.itextpdf:itext7-core:7.2.5")    implementation("com.itextpdf:itext7-kotlin-extensions:1.0.0")}


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

import com.itextpdf.kernel.pdf.PdfDocumentimport com.itextpdf.kernel.pdf.PdfWriterimport com.itextpdf.layout.Documentimport com.itextpdf.layout.element.Paragraph

fun createSimplePdf(fileName: String) { val writer = PdfWriter(fileName) val pdf = PdfDocument(writer) val document = Document(pdf)

document.add(Paragraph("مرحباً، عالم PDF في Kotlin!")) document.add(Paragraph("هذا مثال على استخدام iText7."))

document.close() println("تم إنشاء PDF: $fileName")}

fun main() { createSimplePdf("example_itext.pdf")}


مثال: جدول مع بيانات

import com.itextpdf.layout.element.Tableimport com.itextpdf.layout.element.Cell

fun createTablePdf(fileName: String) { val writer = PdfWriter(fileName) val pdf = PdfDocument(writer) val document = Document(pdf)

val table = Table(3) // 3 أعمدة table.addHeaderCell("الاسم") table.addHeaderCell("العمر") table.addHeaderCell("المدينة")

table.addCell("آنا") table.addCell("28") table.addCell("موسكو")

table.addCell("إيفان") table.addCell("35") table.addCell("سانت بطرسبرغ")

document.add(table) document.close() println("تم إنشاء PDF مع جدول: $fileName")}


2. Apache PDFBox - بديل خفيف ومجاني



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



الإضافة (Gradle)

dependencies {    implementation("org.apache.pdfbox:pdfbox:2.0.27")}


مثال: إنشاء PDF مع نص

import org.apache.pdfbox.pdmodel.PDDocumentimport org.apache.pdfbox.pdmodel.PDPageimport org.apache.pdfbox.pdmodel.PDPageContentStreamimport org.apache.pdfbox.pdmodel.font.PDType1Font

fun createPdfWithPdfBox(fileName: String) { val document = PDDocument() val page = PDPage() document.addPage(page)

val contentStream = PDPageContentStream(document, page) contentStream.beginText() contentStream.setFont(PDType1Font.HELVETICA_BOLD, 14f) contentStream.newLineAtOffset(100f, 700f) contentStream.showText("PDFBox + Kotlin = رائع!") contentStream.endText() contentStream.close()

document.save(fileName) document.close() println("تم إنشاء PDF: $fileName")}


مثال: إضافة صورة

import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject

fun createPdfWithImage(fileName: String, imagePath: String) { val document = PDDocument() val

توصيات