كيفية العمل مع واجهات PDF في Java
التعليقات المسطحة
تسطيع جميع التعليقات في تيار محتوى الصفحة بحيث لا يمكن تعديلها أو إزالتها ككائنات ملاحظة منفصلة. هذه خطوة شائعة قبل طباعة أو أرشفة مستند:
try (PdfAnnotationEditor editor = new PdfAnnotationEditor()) {
editor.bindPdf("annotated.pdf");
editor.flattenAnnotations();
editor.save("flat.pdf");
}إزالة علامات المفتاح
حذف جميع علامات المخطط من مستند. العلامات (وتسمى أيضاً الخطوط) هي إدخالات شجرة التنقل المرئية في أشرطة الجانبية لقراءة PDF:
try (PdfBookmarkEditor editor = new PdfBookmarkEditor()) {
editor.bindPdf("input.pdf");
editor.deleteBookmarks();
editor.save("no-bookmarks.pdf");
}استبدال النص
استبدال سلسلة في جميع صفحات المستند. هذا مفيد لملء عبارات احتواء مكان القالب قبل توزيع الملف:
try (PdfContentEditor editor = new PdfContentEditor()) {
editor.bindPdf("template.pdf");
editor.replaceText("{{Date}}", "2026-05-24");
editor.save("output.pdf");
}تشفير المستند
تطبيق تشفير AES-256 مع تصاريح الوصول باستخدام PdfFileSecurity. DocumentPrivilege.getForbidAll() تعطي المعدل السابق كل العمليات؛ الأذونات الفردية يمكن بعد ذلك إعادة تمكينها باستخدام طرق الوضع:
try (PdfFileSecurity security = new PdfFileSecurity("input.pdf", "secured.pdf")) {
DocumentPrivilege priv = DocumentPrivilege.getForbidAll();
priv.setAllowPrint(true);
security.encryptFile("user", "owner", priv, KeySize.x256);
}استخراج النص
التكرار على نص الصفحة باستخدام PdfExtractor.اتصل بي extractText() أول من يعالج كل الصفحات، ثم استرداد نص كل صفحة مع getNextPageText():
try (PdfExtractor extractor = new PdfExtractor()) {
extractor.bindPdf("document.pdf");
extractor.extractText();
while (extractor.hasNextPageText()) {
String text = extractor.getNextPageText();
System.out.println(text);
}
}