هل توجد واجهة برمجة تطبيقات Java يمكنها إنشاء مستندات Word غنية؟[مغلق]

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

  •  03-07-2019
  •  | 
  •  

سؤال

لدي تطبيق جديد سأعمل عليه حيث يتعين علي إنشاء مستند Word يحتوي على جداول ورسوم بيانية وجدول محتويات ونص.ما هي واجهة برمجة التطبيقات (API) الجيدة لاستخدامها في هذا؟ما مدى تأكدك من أنه يدعم الرسوم البيانية وToCs والجداول؟ما هي بعض الأمور الخفية في استخدامها؟

بعض التوضيحات:

  • لا أستطيع إخراج ملف PDF، فهم يريدون مستند Word.
  • إنهم يستخدمون MS Word 2003 (أو 2007)، وليس OpenOffice
  • التطبيق يعمل على خادم التطبيق *nix

سيكون من الرائع أن أتمكن من البدء بمستند قالب وملء بعض المساحات بالجداول والرسوم البيانية وما إلى ذلك.

يحرر:العديد من الإجابات الجيدة أدناه، ولكل منها أخطائها الخاصة فيما يتعلق بوضعي الحالي.من الصعب اختيار "الإجابة النهائية" منهم.أعتقد أنني سأترك الأمر مفتوحًا، وآمل أن يتم إيجاد حلول أفضل.

يحرر:يبدو أن مشروع OpenOffice UNO هو الأقرب إلى ما طلبته.في حين أن النقاط المهمة هي بالتأكيد أكثر شيوعًا، إلا أنها غير ناضجة جدًا بالنسبة لما أريده.

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

المحلول

في عام 2007، استخدم مشروعي OpenOffice.org بنجاح كائنات الشبكة العالمية (UNO) لإنشاء مستندات متوافقة مع MS-Word (*.doc) برمجيًا، بالإضافة إلى مستندات PDF المقابلة، من تطبيق Java Web (إطار عمل Struts/JSP).

يتيح لك OpenOffice UNO أيضًا إنشاء مخططات وجداول بيانات وعروض تقديمية متوافقة مع MS-Office.لقد تمكنا من إنشاء مستندات Word متطورة بشكل ديناميكي، بما في ذلك المخططات والجداول.

لقد قمنا بتبسيط العملية باستخدام نموذج مستندات MS-Word مع إدراج الإشارات المرجعية التي يقوم البرنامج بإدراج المحتوى فيها، ومع ذلك، يمكنك إنشاء المستندات بالكامل من البداية.كان الهدف هو جعل البرنامج ينشئ مستندات تقارير يمكن مشاركتها وتعديلها بشكل أكبر من قبل المستخدمين النهائيين قبل تحويلها إلى PDF للتسليم النهائي والأرشفة.

يمكنك اختياريًا إنتاج مستندات بتنسيقات OpenOffice إذا كنت تريد أن يستخدم المستخدمون OpenOffice بدلاً من MS-Office.في حالتنا، يريد المستخدمون استخدام أدوات MS-Office.

تم تضمين UNO ضمن مجموعة OpenOffice.لقد قمنا ببساطة بربط تطبيق Java الخاص بنا بالمكتبات ذات الصلة بـ UNO داخل المجموعة.ان مجموعة أدوات تطوير برمجيات أوبن أوفيس (SDK) متاح ويحتوي على أمثلة للتطبيقات ودليل مطور UNO.

لم أتحقق مما إذا كان بإمكان أحدث إصدار من OpenOffice UNO إنشاء تنسيقات مستندات MS-Office 2007 Open XML.

الأشياء المهمة في OpenOffice UNO هي:

  1. إنها مجانية
  2. وهو يدعم لغات متعددة (على سبيل المثال.فيجوال بيسك، جافا، سي++، وغيرها).
  3. وهو مستقل عن النظام الأساسي (Windows وLinux وUnix وما إلى ذلك).

فيما يلي بعض المواقع الإلكترونية المفيدة:

نصائح أخرى

أظن أباتشي النقاط المهمة يمكن القيام بهذه المهمة.قد تكون المشكلة المحتملة اعتمادًا على الاستخدام الذي تستهدفه ناتجة عن حقيقة أن HWPF لا يزال في مرحلة التطوير المبكرة.

HWPFهي مجموعة واجهات برمجة التطبيقات لقراءة وكتابة مستندات Microsoft Word 97 (-xp) باستخدام (فقط) Java.

يمكنك استخدام هذا:http://code.google.com/p/java2word

لقد قمت بتنفيذ واجهة برمجة التطبيقات هذه والتي تسمى Java2Word.باستخدام بضعة أسطر من التعليمات البرمجية، يمكنك إنشاء مستند Microsoft Word واحد.

على سبيل المثال:

IDocument myDoc = new Document2004();
myDoc.getBody().addEle(new Heading1("Heading01"));
myDoc.getBody().addEle(new Paragraph("This is a paragraph...")

هناك بعض الأمثلة على كيفية الاستخدام.ستحتاج في الأساس إلى ملف jar واحد.اسمحوا لي أن أعرف إذا كنت بحاجة إلى أي معلومات إضافية حول كيفية إعداده.

*لقد كتبت هذا لأن لدينا ضرورة حقيقية واحدة في المشروع.المزيد في مدونتي:

http: //leonardo-pinho.blogspot.com/2010/07/java2word-word-document-generator-from.html *

هتاف ليوناردو

يحرر :تم نقل المشروع الموجود في الرابط إلى https://github.com/leonardoanlista/java2word

جرب Aspose.Words for Java، فهو يعمل على أي نظام تشغيل مثبت عليه Java.

سيتم إخراج المستند إلى DOC أو DOCX أو RTF إذا كنت بحاجة إلى تنسيق إخراج MS Word.يتم دعم الجميع بشكل جيد على قدم المساواة.

باستخدام واجهة برمجة التطبيقات هذه، يمكنك إنشاء مستند من البداية، حرفيًا من العقد وتعيين خصائص التنسيق الخاصة بها.يمكنك أيضًا استخدام DocumentBuilder الذي يوفر أساليب ذات مستوى أعلى مثل إنشاء صف جدول وإدراج حقل وما إلى ذلك.أو يمكنك نسخ/ضم/نقل أجزاء بين مستند موجود تم إنشاؤه مسبقًا، لنفترض أنك تريد تجميع عقد، ما عليك سوى التقاط ونسخ أجزاء من عدة مستندات وسيقوم Aspose.Words بدمج الأنماط وتنسيق القائمة وما إلى ذلك بشكل صحيح في المستند الناتج.

ستتمكن من إدراج حقل جدول المحتويات باستخدام Aspose.Words، ولكن اعتبارًا من اليوم، سيتطلب حقل جدول المحتويات تحديثًا للحقل عند فتح المستند في Microsoft Word.ومع ذلك، سنقوم بإصدار الدعم الكامل لحقول جدول المحتويات (TOC) في أوائل عام 2010.على سبيل المثالسيقوم بإنشاء جدول محتويات كامل كما يفعل MS Word.

أنا عضو في فريق Aspose.Words.

لقد تم ذكرها لفترة وجيزة مرة واحدة فقط، لذا أود أن أشير إلى مكتبة docx4j، حيث أنني حققت نجاحًا أكبر مع docx4j أكثر من أي شيء آخر.دعم Apache POI لمستندات Word ليس جيدًا جدًا.أيضًا، على عكس Aspose.Words، فإن docx4j هي ​​مكتبة مفتوحة المصدر.

العيب الوحيد هو أنه مع docx4j، يتعين عليك إنشاء مستندات بتنسيق Office Open XML (docx) بدلاً من مستندات بتنسيق (doc) مستندة إلى OLE2.هذا هو التنسيق الافتراضي لبرنامج Word 2007، ولكن سيحتاج مستخدمو Word 2003 والإصدارات الأقدم إلى تثبيت حزمة التوافق.

يحاول Aspose.Words لجافا.

Aspose.Words for Java هي مكتبة فئة (تجارية) متقدمة لـ Java تمكنك من تنفيذ مجموعة كبيرة من مهام معالجة المستندات مباشرة داخل تطبيقات Java الخاصة بك.

يدعم Aspose.Words for Java تنسيقات DOC، وOOXML، وRTF، وHTML، وOpenDocument.باستخدام Aspose.Words، يمكنك إنشاء المستندات وتعديلها وتحويلها دون استخدام Microsoft Word.

يمكنك استخدام جسر Java COM مثل يعقوب.إذا كان من جانب العميل، هناك خيار آخر يتمثل في استخدام جافا سكريبت.

لقد استخدمت Aspose.Words للقيام بدمج البريد في .NET.أعتقد أن لديهم أيضًا إصدار Java.

هناك أداة تسمى JODConverter والتي يتم ربطها بالمكتب المفتوح للكشف عن محولات تنسيق الملفات الخاصة بها، وهناك إصدارات متاحة كتطبيق ويب (موجود في Tomcat) يمكنك النشر عليه وأداة سطر الأوامر.لقد قمت بتشغيل html عليه والتحويل إلى .doc وpdf بنجاح، وهو مشروع كبير إلى حد ما، لم يتم إطلاقه بعد ولكن أعتقد أنني سأستخدمه.http://sourceforge.net/projects/jodconverter/

iText سهل الاستخدام حقًا.

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

docx4j أو poi، وكلاهما ASL v2

@عجائب الحوسبة:iText هو في الواقع مجاني ومفتوح المصدر

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

هل لدى أي شخص أي خبرة في استخدام iText بهذه الطريقة؟

إن Bill وPOI وiText API متشابهان جدًا من منظور البرمجة.لقد عملت مع كليهما في الماضي ووجدت أنهما سهل الاستخدام وموثق جيدًا.

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

ومع ذلك أعتقد أن التنسيق في RTF محدود مقارنة بـ DOC.لا أعرف ما إذا كنت ستتمكن من تنفيذ الميزات المتقدمة التي تبحث عنها (الجداول والصور المضمنة) دون قدر لا بأس به من المتاعب، إن وجدت.

بالنظر إلى ما قلته بشأن عدم وجود وظائف كافية في HWPF لاحتياجاتك (لقد تعاملت فقط مع جانب Excel من النقاط المهمة) قد يكون أفضل رهان هو إقناع السلطات بأن PDF هو أفضل تقنية لهذه المهمة.

لقد قمت بتطوير ملفات كلمات خالصة تعتمد على XML في الماضي.لقد استخدمت .NET، لكن اللغة لا ينبغي أن تكون ذات أهمية لأنها في الواقع لغة XML.لم يكن الأمر أسهل ما يمكن القيام به (كان لدي مشروع يتطلب ذلك منذ بضع سنوات.) هذه تعمل فقط في Word 2007 أو إصدار أحدث - ولكن كل ما تحتاجه هو المستند التقني من Microsoft الذي يصف ما تفعله كل علامة.يمكنك تحقيق كل ما تريده باستخدام العلامات بنفس الطريقة كما لو كنت تستخدم Word (بالطبع يكون الأمر أكثر إيلامًا في البداية).

بعد المزيد من البحث، جئت عبر iText, ، واجهة برمجة التطبيقات لإنشاء ملفات PDF وRTF.أعتقد أنه يمكنني استخدام جيل RTF لإنشاء ملف Doc قابل للقراءة ويمكن بعد ذلك تحريره باستخدام Doc وإعادة حفظه.

هل لدى أي شخص أي خبرة في استخدام iText بهذه الطريقة؟

هناك احتمال آخر، لأن هذا تطبيق ويب.

لقد تمكنت من عرض صفحة HTML مع تعيين نوع MIME على "application/msword"، مما تسبب في قيام المتصفح بإنشاء Word الذي استورد HTML بشكل جيد، مما يسمح بالتحرير والحفظ تمامًا كما لو كنت أخرج مستند Word حقيقيًا.

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

على الرغم من أن هذا يأتي متأخرًا كثيرًا عن الطلب، إلا أنه قد يساعد الآخرين. دوكموسيس يوفر Java API لإنشاء المستندات بتنسيق doc وpdf وodt باستخدام المستندات كقوالب.ويستخدم OpenOffice كمحرك لإجراء تحويلات التنسيق.تتم معالجة المستندات والسكان بواسطة Docmosis نفسه.

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