قم بإنشاء وجهات لجميع الإشارات المرجعية في ملف PDF باستخدام iText API

StackOverflow https://stackoverflow.com/questions/173495

سؤال

أرغب في كتابة بعض التعليمات البرمجية (Java) التي تأخذ مستند PDF وتنشئ وجهات مسماة من جميع الإشارات المرجعية.أعتقد أن iText API هي أسهل طريقة للقيام بذلك، لكنني لم أستخدم واجهة برمجة التطبيقات من قبل.

كيف يمكنك كتابة هذا النوع من التعليمات البرمجية باستخدام iText API؟هل يستطيع iText إجراء التحليل اللازم لمعالجة ملفات PDF الموجودة بنفسه؟نوع التلاعب الذي أفكر فيه هو:

  • يفتح،
  • البحث عن الإشارات المرجعية،
  • إنشاء وجهات،
  • يحفظ،
  • يغلق.

أم أن هناك واجهة برمجة تطبيقات مختلفة قد تكون أفضل؟

هل كانت مفيدة؟

المحلول

سأحذرك فقط مقدمًا أنك قد تشعر بخيبة أمل بسبب هذا.ليس المقصود من iText حقًا استخدامه كمحلل.إنها حقًا أكثر من أجل الإنشاء جديدة تماما مستندات PDF، ولكن يمكنك الاستفادة منها.

للبدء، باستخدام iText، لن تتمكن من تعديل مستند PDF الموجود.ما لك يستطيع ومع ذلك، ما عليك فعله هو إنشاء نسخة تحتوي على الميزات الإضافية التي تريدها.(إذا كان شخص آخر يعرف أفضل، لو سمحت اسمحوا لي أن أعرف، وهذا يقودني إلى الجنون.)

ما تريد القيام به هو إنشاء كائن PdfReader من دفق الإدخال في الملف المصدر الخاص بك.ثم قم بإنشاء كائن PdfCopy (وهو مجرد PdfWriter ممتد يجعل الحصول على البيانات من مصدر موجود أكثر ملاءمة) لوجهتك.

وبقدر ما أستطيع أن أقول، لا يمكن الحصول على الإشارات المرجعية من iText على الإطلاق.قد تكون هناك حاجة إلى مكتبة أخرى.أظن com.jpedal قد يكون لديه القدرة على استخراجها (يمكن الحصول عليها كمستند XML، والذي قد يتعين عليك بعد ذلك تحليله للحصول على ما تريد.) ومع ذلك، يمكنك الحصول عليها، ثم إضافتها إلى قائمة java.util.List، و قم بتعيين تلك القائمة كمخطط تفصيلي في PDFCopy.الإشارات المرجعية نفسها هي مجرد HashMaps مع مجموعة معينة من المفاتيح.لست متأكدًا من ماهية جميع القيم، ولكنها تتضمن "العنوان" و"الإجراء" (الذي يبدو أنه المكان الذي تحدد فيه أن هذه وجهة مسماة، على الرغم من أنني لا أعرف ما هي هذه القيمة )، و"URI" (الذي يُستخدم إذا كان هذا رابطًا خارجيًا - أظن أن هذا سيحدد اسم الوجهة المسماة التي ترتبط بها).مرة أخرى، من الصعب العثور على التفاصيل.

ثم قم بالتكرار على صفحات القارئ، واستيراد كل صفحة إلى ملف PdfCopy. هذه الصفحة قد تساعدك.

آسف أنا لست أكثر فائدة لك.حظ سعيد.

ملاحظة.إذا كان أي شخص آخر يعرف أداة أفضل مرخصة بـ (L)GPL أو BSD، فأنا أحب أن أسمع عنها.

نصائح أخرى

متابعة:لقد أرسلت تصحيحًا إلى iText منذ بضعة أشهر (تم قبوله الآن وهو جزء من HEAD) يضيف إمكانات تحليل النص إلى iText.يعاني PdfBox (المذكور أدناه) من مشكلات في قراءة ملفات PDF الأحدث التي تستخدم تدفقات xref بدلاً من تنسيق جدول xref الأقدم.


مكتبة أخرى ذلك يكون جيد جدًا في تحليل ملفات PDF الموجودة PDFBox ويمكن استخدامه أيضًا لتعديل ملف PDF موجود.لمعلوماتك - هذا هو محلل النص الذي يستخدمه لوسين.

سأذكر أيضًا أن iText يفعل لديك القدرة على تحليل ملف PDF، إلا أنها ليست جيدة في تحليل محتوى النص في كل صفحة.إذا كنت تتطلع إلى الوصول إلى بنيات PDF ذات المستوى الأعلى (القواميس، إلخ...) المستخدمة لتخزين الإشارات المرجعية، وما إلى ذلك...ولا تمانع في أن تتسخ يديك قليلاً بقراءة مواصفات PDF، يمكنك بالتأكيد أن تفعل ما تسأل عنه (نحن نفعل ذلك بأنفسنا).

ال مواصفات PDF كبير الحجم، ولكنه قابل للقراءة في معظمه، ولا داعي للقلق بشأن الجزء الأكبر منه (الموجه نحو محتوى الصفحة الفعلي وعرضه) إذا كان كل ما تحاول القيام به هو استخراج الإشارات المرجعية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top