إضافة ملاحظات مخصصة أو علامات مائية غالبًا ما تتطلب إضافة نص إلى PDF في تطبيقات Java. Conholdate.Total for Java هو مجموعة تطوير برمجيات قوية تمكّن المطورين من تعديل ملفات PDF برمجيًا. يوضح هذا الدليل المتطلبات المسبقة، ويقدم شرحًا مفصلاً للكود، ومثالًا كاملاً حتى تتمكن من وضع نص مخصص فوق ملفات PDF الموجودة بسهولة.
المتطلبات والإعداد
قبل أن تبدأ، تأكد من أن لديك ما يلي:
- تم تثبيت Java 8 أو أعلى.
- Maven لإدارة التبعيات.
- بيئة تطوير متكاملة مثل IntelliJ IDEA أو Eclipse.
- ترخيص صالح لـ Conholdate.Total for Java للاستخدام في الإنتاج (انظر قسم الترخيص لاحقًا).
أضف مستودع Maven الخاص بـ Conholdate واعتماد SDK إلى ملف pom.xml الخاص بك:
<repositories>
<repository>
<id>conholdate-repo</id>
<name>Conholdate Maven Repository</name>
<url>https://repository.conholdate.com/repo/</url>
</repository>
</repositories>
<dependency>
<groupId>com.conholdate</groupId>
<artifactId>conholdate-total</artifactId>
<version>24.9</version>
<type>pom</type>
</dependency>
قم بتنزيل أحدث ملفات SDK الثنائية من صفحة التنزيل. بعد نجاح بناء Maven، تكون جاهزًا لبدء الترميز. القسم التالي يوضح بالضبط كيفية تحميل ملف PDF وإدراج نص.
إضافة نص إلى PDF في Java: دليل خطوة بخطوة
فيما يلي استعراض مختصر لكل خطوة منطقية. يتم إعادة إنتاج الكود الكامل لاحقًا في قسم مثال الكود الكامل.
الخطوة 1: فتح ملف PDF وإنشاء TextBuilder
أولاً، افتح ملف PDF المصدر باستخدام الفئة Document، ثم أنشئ كائن TextBuilder يشير إلى الصفحة التي تريد إضافة النص إليها.
String dataDir = "path/to/your/document/directory/";
// Open document
Document doc = new Document(dataDir + "Conholdate.pdf");
TextBuilder builder = new TextBuilder(doc.getPages().get_Item(1));
تم توثيق الفئتين Document و TextBuilder في مرجع API.
الخطوة 2: إنشاء وتكوين TextParagraph
إنشاء TextParagraph وتكوين تخطيطه: المسافة البادئة المطبقة على الأسطر اللاحقة، المستطيل الذي يحد منطقة النص على الصفحة، ووضعية التفاف الكلمات.
// Create text paragraph
TextParagraph paragraph = new TextParagraph();
// Set subsequent lines indent
paragraph.setSubsequentLinesIndent(20);
// Specify the location to add TextParagraph
paragraph.setRectangle(new Rectangle(100, 300, 200, 700));
// Specify word wrapping mode
paragraph.getFormattingOptions().setWrapMode(TextFormattingOptions.WordWrapMode.ByWords);
الخطوة 3: إنشاء TextFragment وتكوين الخط
إنشاء TextFragment يحتوي على النص الذي تريد وضعه فوقه، ثم ضبط الخط وحجم الخط عبر getTextState().
// Create text fragment
TextFragment fragment1 = new TextFragment("the quick brown fox jumps over the lazy dog");
fragment1.getTextState().setFont(FontRepository.findFont("Times New Roman"));
fragment1.getTextState().setFontSize(12);
الخطوة 4: إلحاق الجزء والفقرة
أضف جزء النص كسطر داخل الفقرة، ثم أضف الفقرة إلى الصفحة عبر TextBuilder.
// Add fragment to paragraph
paragraph.appendLine(fragment1);
// Add paragraph
builder.appendParagraph(paragraph);
الخطوة 5: حفظ ملف PDF المعدل
أخيرًا، قم بإنشاء مسار الإخراج واحفظ المستند الناتج.
dataDir = dataDir + "AddText_out.pdf";
// Save resulting PDF document.
doc.save(dataDir);
مع هذه الخطوات، لقد أكملت سير عمل إدراج النص في PDF.
مثال كامل للكود: إدراج نص إلى PDF في Java
يوضح المثال التالي العملية الكاملة من تحميل ملف المصدر إلى حفظ ملف PDF المحدث.
يوضح هذا المثال كيفية إضافة نص إلى ملف PDF موجود باستخدام Conholdate.Total for Java.
import com.aspose.pdf.Document;
import com.aspose.pdf.TextBuilder;
import com.aspose.pdf.TextParagraph;
import com.aspose.pdf.Rectangle;
import com.aspose.pdf.TextFormattingOptions;
import com.aspose.pdf.TextFragment;
import com.aspose.pdf.FontRepository;
public class AddTextToPdf {
public static void main(String[] args) {
String dataDir = "path/to/your/document/directory/";
// Open document
Document doc = new Document(dataDir + "Conholdate.pdf");
TextBuilder builder = new TextBuilder(doc.getPages().get_Item(1));
// Create text paragraph
TextParagraph paragraph = new TextParagraph();
// Set subsequent lines indent
paragraph.setSubsequentLinesIndent(20);
// Specify the location to add TextParagraph
paragraph.setRectangle(new Rectangle(100, 300, 200, 700));
// Specify word wrapping mode
paragraph.getFormattingOptions().setWrapMode(TextFormattingOptions.WordWrapMode.ByWords);
// Create text fragment
TextFragment fragment1 = new TextFragment("the quick brown fox jumps over the lazy dog");
fragment1.getTextState().setFont(FontRepository.findFont("Times New Roman"));
fragment1.getTextState().setFontSize(12);
// Add fragment to paragraph
paragraph.appendLine(fragment1);
// Add paragraph
builder.appendParagraph(paragraph);
dataDir = dataDir + "AddText_out.pdf";
// Save resulting PDF document.
doc.save(dataDir);
}
}
ملاحظة: هذا المثال البرمجي يوضح الوظيفة الأساسية. قبل استخدامه في مشروعك، تأكد من تحديث
dataDirللإشارة إلى دليل المستندات الفعلي الخاص بك (الذي يحتوي علىConholdate.pdf)، وتحقق من أن جميع الاعتمادات المطلوبة مثبتة بشكل صحيح، واختبر بدقة في بيئة التطوير الخاصة بك. إذا واجهت أي مشكلات، يرجى الرجوع إلى الوثائق الرسمية أو التواصل مع فريق الدعم للحصول على المساعدة.
الخلاصة
في هذا البرنامج التعليمي أظهرنا كيفية إضافة نص إلى PDF في Java باستخدام الميزات القوية لـ Conholdate.Total for Java. باتباع الخطوات خطوة بخطوة، يمكنك بناء فقرات نصية بثقة باستخدام TextBuilder و TextParagraph، والتحكم في تنسيق الخط عبر TextFragment، وحفظ المستند المعدل. يتعامل SDK مع إحداثيات صفحات PDF وعرض النص داخليًا، لذا يمكنك التركيز على منطق الأعمال. تذكر الحصول على ترخيص مناسب للاستخدام في الإنتاج؛ يمكنك الحصول على ترخيص مؤقت من صفحة الترخيص المؤقت أو استكشاف خيارات التسعير على صفحة التسعير. مع هذه الأدوات في يدك، يصبح تحسين ملفات PDF بالنص المخصص جزءًا بسيطًا من تطبيق Java الخاص بك.
الأسئلة الشائعة
كيف يمكنني إضافة نص إلى PDF في Java دون الكتابة فوق المحتوى الموجود؟
استخدمbuilder.appendParagraph(paragraph)كما هو موضح في المثال؛TextBuilderيضيف الفقرة الجديدة إلى الصفحة المستهدفة، مع الحفاظ على أي محتوى موجود.هل من الممكن إضافة نص علامة مائية مخصص إلى PDF في Java؟
نعم. نفس النهج يعمل مع العلامات المائية — إنشاءTextFragmentبالنص المطلوب للعلامة المائية، ضبط خط وحجم مناسب (أو الشفافية عبر حالة النص)، وإضافته عبرTextParagraphفي كل صفحة.ماذا يجب أن أفعل إذا لم يظهر النص المُدرج بشكل صحيح لبعض اللغات؟
اختر خطًا يدعم مجموعة الأحرف المطلوبة باستخدامFontRepository.findFont(). يحترم SDK إعدادات الخط المطبقة عبرgetTextState()، وتوفر الوثائق إرشادات حول التعامل مع النصوص المختلفة.هل يمكنني معالجة مجموعة من ملفات PDF دفعيًا لإضافة نفس النص؟
بالتأكيد. قم بلف الشيفرة داخل حلقة تتكرر عبر قائمة مسارات الملفات، مع إعادة استخدام نفس منطقDocument/TextBuilderلكل ملف.
