كيف تقرأ ملف PDF بجافا

امرأة تعمل في المكتب

حقوق الصورة: بيكسلاند / بيكسلاند / جيتي إيماجيس

ليس من الصعب قراءة ملفات PDF في Java باستخدام المكتبات المتاحة بسهولة. تتيح لك قراءة ملفات PDF كتابة برامج Java يمكنها معالجة النص في تلك الملفات. أحد الخيارات لقراءة ملفات PDF هو مكتبة PDFBox المجانية مفتوحة المصدر المتاحة من Apache. تعمل منصة تطوير Eclipse Java على تسهيل هذه المهمة وإدارة المكتبات التي ستقوم بتنزيلها. يجب أن تكون على دراية ببرمجة Java للاستفادة من مكتبات Java هذه.

جمع المكتبات المطلوبة

الخطوة 1

قم بتنزيل Java JDK من موقع Sun على الويب. هذا ملف قابل للتنفيذ يمكنك تثبيته على نظامك عن طريق تشغيله. الإصدارات متوفرة لأنظمة Windows و Mac و Linux. انقر فوق الزر الأحمر "تنزيل". احفظ ملفًا يسمى "jdk-6uxx-windows-xxx.exe" عندما يُطلب منك ذلك. احفظ هذا الملف ثم انقر فوقه نقرًا مزدوجًا لبدء تشغيل مثبت Java.

فيديو اليوم

الخطوة 2

قم بتنزيل نظام تطوير Eclipse وفك ضغطه في دليل المستوى الأعلى. حدد "Eclipse IDE لمطوري Java." سيبدأ هذا تنزيل "eclipse-java-galileo-SR2-win32.zip." انقر نقرًا مزدوجًا فوق الملف لفك ضغطه بعد اكتمال التنزيل. حدد موقع الدليل الجذر "C:" لفك ضغط Eclipse.

الخطوه 3

ابدأ Eclipse بالنقر المزدوج على "eclipse.exe" في الدليل الذي أنشأته للتو عن طريق فك ضغط ملف eclipse zip. في نظام Eclipse ، قم بإنشاء مشروع باسم "PrintPdf". حدد "ملف" ثم "جديد" ثم "مشروع جافا". اكتب اسم المشروع "PrintPdf" في مربع الحوار الذي يظهر. تأكد من تحديد زر الاختيار الذي يشير إلى "إنشاء مجلدات منفصلة لملفات المصدر والفئة." انقر فوق "إنهاء".

الخطوة 4

قم بإنشاء مجلد "lib" في مشروع "PrintPdf" الخاص بك. انقر بزر الماوس الأيمن فوق مشروع "PrintPdf" وحدد "جديد" ثم "مجلد". أدخل الاسم "ليب" وانقر على "إنهاء".

الخطوة الخامسة

قم بتنزيل Apache "PDFBox.jar" من موقع Apache وانسخه في دليل lib الذي أنشأته للتو. على نفس صفحة الويب ، قم بتنزيل ملف "fontbox-nn.jar" وملف "jempbox-nn.jar". في كل حالة ، عند النقر فوق ملف jar هذا ، سينقلك إلى صفحة حيث يمكنك تحديد أحد الخوادم العديدة التي يمكنها توفير هذا الملف. اختر كل واحد منهم وسيتم تنزيل كل ملف جرة. انسخ كل ملف jar إلى دليل lib الذي أنشأته للتو.

الخطوة 6

قم بتنزيل حزمة Apache log4j.jar بنفس الطريقة وانسخ ملف log4j.jar إلى الدليل. تستخدم مكتبة Apache PDFBox مكتبة تسجيل Apache ، لذلك يجب أن يكون هذا الملف موجودًا.

الخطوة 7

قم بتنزيل حزمة Apache Commons Discovery كملف مضغوط. انقر نقرًا مزدوجًا على ملف zip ، وحدد "commons-discovery-nn.jar" واستخرجه في دليل lib.

الخطوة 8

في Eclipse ، انقر فوق دليل "lib" واضغط على "F5". تأكد من عرض جميع ملفات الجرة التي أضفتها.

الخطوة 9

انقر بزر الماوس الأيمن فوق مشروع PrintPDF وحدد "خصائص". حدد "Java Build Path" وحدد علامة التبويب "Libraries". انقر فوق "إضافة برطمانات" وانتقل إلى دليل lib الذي أنشأته للتو ، وأضف "commons-logging-nn.jar" "fontbox-nn.jar" ، "jempbox-nn.jar" ، "log4j-nn.jar ، "و" pdfbox-nn.jar. " انقر فوق "موافق".

اكتب الكود لقراءة ملفات PDF

الخطوة 1

انقر بزر الماوس الأيمن فوق المجلد "src" الخاص بمشروع "PrintPDF" وحدد "جديد" و "الحزمة". قم بإنشاء حزمة باستخدام أي اسم ذي معنى. على سبيل المثال ، قم بتسمية الحزمة "com.pdf.util." انقر فوق "إنهاء".

الخطوة 2

انقر بزر الماوس الأيمن فوق اسم الحزمة الذي أنشأته للتو وحدد "جديد" ثم "فئة". أنشئ فئة باسم "PDFTextParser." تأكد من النقر فوق خانة الاختيار "public static void main ..." حتى يقوم النظام بإنشاء ملف الطريقة "الرئيسية".

الخطوه 3

قم بتحرير الطريقة "main" في فئة "PDFTextParser" لتحتوي على الكود التالي:

public static void main (String args []) {PDFTextParser pdf = new PDFTextParser ("data / javaPDF.pdf") GO // طباعة النتائج System.out.println (pdf.getParsedText ()) GO}

لاحظ أن الملف الذي ترغب في طباعته مكتوب في المُنشئ إلى PDFTextParser ("data / JavaPDF.pdf"). يمكن أن تكون حجة سطر أوامر بنفس السهولة:

PDFTextParser pdf = ملف PDFTextParser جديد (argv [0])

يذهب

أو محددة من واجهة المستخدم الرسومية.

يقوم بإنشاء مثيل لفئة PDFTextParser ، ثم يستدعي طريقة "getParsedText" الخاصة بها.

الخطوة 4

أدخل الكود التالي أسفل سطر الفئة العامة "PDFTextParser" الذي تم إنشاؤه من أجلك.

محلل PDFParser خاص = خالٍ GO

// استخراج نص من مستند PDF. PDFTextParser العام (اسم ملف السلسلة) {ملف ملف = ملف جديد (اسم الملف)

اذهب إذا (! file.isFile ()) {System.err.println ("الملف" + اسم الملف + "غير موجود.") GO} // إعداد مثيل لمحلل PDF حاول {parser = new PDFParser (ملف جديد FileInputStream (ملف)) GO} catch (IOException e) {System.err.println ("تعذر فتح PDF محلل. "+ e.getMessage ()) GO}} // public String getParsedText () {PDDocument pdDoc = null GO COSDocument cosDoc = null؛
String parsedText = خالية ؛ يذهب

جرب {PDFTextStripper pdfStripper = new PDFTextStripper ()

GO parser.parse () GO cosDoc = parser.getDocument () GO pdDoc = new PDDocument (cosDoc) GO

// الحصول على قائمة بجميع الصفحات قائمة  list = pdDoc.getDocumentCatalog (). getAllPages ()

يذهب

// لاحظ أنه يمكنك طباعة أي صفحات تريدها // باختيار قيم مختلفة لصفحة البداية والنهاية pdfStripper.setStartPage (1) ؛ // طول int على أساس 1 = list.size () ؛ // إجمالي عدد الصفحات pdfStripper.setEndPage (الطول) ؛ // آخر صفحة // احصل على نص الصفحات المحددة parsedText = pdfStripper.getText (pdDoc)

GO} catch (IOException e) {System.err .println ("حدث استثناء أثناء تحليل مستند PDF." + e.getMessage ()) GO} أخيرًا {try {if (cosDoc! = null) cosDoc.close () GO if (pdDoc! = null) pdDoc.close () GO} catch (IOException e) {e.printStackTrace () GO} }
إرجاع النص المحلل GO}

الخطوة الخامسة

تشغيل البرنامج. انقر بزر الماوس الأيمن فوق فئة PDFTextParser وانقر فوق "تشغيل باسم" ثم فوق "برنامج Java". يجب تشغيل البرنامج وطباعة المحتويات النصية لملف PDF الذي أدخلته في التعليمات البرمجية الخاصة بك.

قم بإيقاف رسالة خطأ بدء تشغيل Log4j

الخطوة 1

قم بتكوين ملف تكوين لمنع رسالة الخطأ log4j الخاصة بنظام تسجيل Java التي تم إنشاؤها عندما لا يمكن العثور على ملف التكوين عند بدء تشغيله. انقر بزر الماوس الأيمن فوق المجلد "src" الخاص بمشروع PrintPDF وحدد "جديد" ثم "ملف". قم بتسمية الملف "log4j.properties" سيعرض Eclipse شاشة فارغة لهذا الملف الجديد.

الخطوة 2

الصق الأسطر التالية في الشاشة الفارغة التي تمثل ملف "log4j.properties".

الخطوه 3

قم بحفظ ملف "log4j.properties". سيؤدي وجود هذا الملف في دليل المستوى الأعلى "src" إلى منع رسالة بدء تشغيل log4j وأي رسائل تسجيل تافهة. سيقوم نظام log4j بطباعة الأخطاء الفعلية فقط.

نصيحة

هناك أيضًا عدد من الحزم التجارية التي يمكنك استخدامها لاستخراج نص من ملفات PDF ، لكنها ليست رخيصة الثمن.