Apakah ada API Java yang dapat membuat dokumen Word yang kaya? [Tutup]

111

Saya memiliki aplikasi baru yang akan saya kerjakan di mana saya harus menghasilkan dokumen Word yang berisi tabel, grafik, daftar isi dan teks. Apa API yang bagus untuk digunakan untuk ini? Seberapa yakin Anda bahwa ini mendukung grafik, ToC, dan tabel? Apa saja alasan tersembunyi dalam menggunakannya?

Beberapa klarifikasi:

  • Saya tidak bisa mengeluarkan PDF, mereka menginginkan dokumen Word.
  • Mereka menggunakan MS Word 2003 (atau 2007), bukan OpenOffice
  • Aplikasi berjalan di * nix app-server

Alangkah baiknya jika saya bisa memulai dengan dokumen template dan hanya mengisi beberapa ruang dengan tabel, grafik, dll.

Sunting: Beberapa jawaban bagus di bawah ini, masing-masing dengan kesalahan mereka sendiri sejauh situasi saya saat ini. Sulit untuk memilih "jawaban akhir" dari mereka. Pikir saya akan membiarkannya terbuka, dan berharap solusi yang lebih baik akan dibuat.

Sunting: Proyek OpenOffice UNO tampaknya paling dekat dengan apa yang saya minta. Meskipun POI lebih umum, POI terlalu tidak dewasa untuk apa yang saya inginkan.

billjamesdev
sumber
26
Tidak yakin bagaimana menutup pertanyaan ini 30 bulan setelah terakhir kali diedit, dan lebih dari 3 tahun setelah awalnya ditanyakan akan sangat produktif. Jika saya mengubah judul menjadi "Bagaimana cara membuat dokumen Word yang kaya dengan API Java?" apakah itu akan memperbaiki ini?
billjamesdev
1
jika ada orang yang memerlukan ulasan lengkap tentang java api esupu.com/open-source-office-document-java-api-review
Supun Sameera
Anda mungkin melihat docxtemplater, https://github.com/edi9999/docxtemplater/ yang merupakan perpustakaan yang saya buat untuk menghasilkan docx dari template docx
edi9999
1
Pertanyaannya harus dibuka kembali. Pertanyaan telah diubah agar sesuai dengan aturan, oleh karena itu, saya ingin memanggil siapa pun yang memiliki kekuatan untuk membuka kembali pertanyaan ini. Sebelum pertanyaannya adalah: Apa itu Java API yang bagus untuk membuat dokumen Word? Sekarang pertanyaannya adalah: Apakah ada Java API yang dapat membuat dokumen Word yang kaya? Pertanyaannya sekarang dengan jelas menunjuk ke apa yang diinginkan orang yang bertanya: membuat dokumen Word dengan grafik, ToC, dan tabel. Pertanyaannya juga tidak lagi meminta Java API yang "baik". Kebaikan berbeda untuk setiap orang.
Sjoerd Pottuit

Jawaban:

56

Pada tahun 2007 proyek saya berhasil menggunakan antarmuka Universal Network Objects (UNO) OpenOffice.org untuk menghasilkan dokumen yang kompatibel dengan MS-Word (* .doc) secara terprogram, serta dokumen PDF yang sesuai, dari aplikasi Java Web (kerangka Struts / JSP).

OpenOffice UNO juga memungkinkan Anda membuat bagan, spreadsheet, presentasi yang kompatibel dengan MS-Office, dll. Kami dapat membuat dokumen Word yang canggih secara dinamis, termasuk bagan dan tabel.

Kami menyederhanakan proses dengan menggunakan templat dokumen MS-Word dengan sisipan penanda tempat perangkat lunak memasukkan konten, namun Anda dapat membuat dokumen sepenuhnya dari awal. Tujuannya adalah agar perangkat lunak menghasilkan dokumen laporan yang dapat dibagikan dan selanjutnya diubah oleh pengguna akhir sebelum mengubahnya menjadi PDF untuk pengiriman akhir dan pengarsipan.

Anda secara opsional dapat menghasilkan dokumen dalam format OpenOffice jika Anda ingin pengguna menggunakan OpenOffice sebagai ganti MS-Office. Dalam kasus kami, pengguna ingin menggunakan alat MS-Office.

UNO disertakan dalam suite OpenOffice. Kami hanya menautkan aplikasi Java kami ke perpustakaan terkait UNO di dalam suite. Tersedia OpenOffice Software Development Kit (SDK) yang berisi aplikasi contoh dan Panduan Pengembang UNO.

Saya belum menyelidiki apakah OpenOffice UNO terbaru dapat menghasilkan format dokumen MS-Office 2007 Open XML.

Hal-hal penting tentang OpenOffice UNO adalah:

  1. Ini adalah freeware
  2. Ini mendukung banyak bahasa (misalnya Visual Basic, Java, C ++, dan lainnya).
  3. Ini tidak bergantung platform (Windows, Linux, Unix, dll.).

Berikut beberapa situs web yang berguna:

Beruntung
sumber
1
Sejauh ini, ini yang paling kompatibel dengan perangkat yang saya minta. Saya akan menandainya sebagai "diterima". Meskipun saya sepenuhnya menyadari bahwa POI lebih umum, hanya saja POI belum memiliki fungsionalitas yang saya inginkan.
billjamesdev
30

Saya pikir Apache POI dapat melakukan pekerjaan itu. Masalah yang mungkin terjadi tergantung pada penggunaan yang Anda tuju mungkin disebabkan oleh fakta bahwa HWPF masih dalam pengembangan awal.

HWPF adalah kumpulan API untuk membaca dan menulis dokumen Microsoft Word 97 (-XP) menggunakan (hanya) Java.

Jorge Ferreira
sumber
Adakah pengetahuan tentang grafik dan kemungkinan tabel? Bagaimana dengan daftar isi? Adakah yang punya pengalaman nyata melakukan hal-hal itu di POI?
billjamesdev
1
Melihat dokumentasi untuk POI, tampaknya HWPF ini sangat awal dalam pengembangan, terutama memungkinkan untuk membaca teks dari .doc, bukan untuk pembuatan dinamis dari dokumen "kompleks".
billjamesdev
Saya tidak percaya ini menangani grafik / tabel yang lebih kompleks, dll.
Brian Agnew
POI atau docx4j? stackoverflow.com/questions/15013837/…
JasonPlutext
9

Anda dapat menggunakan ini: http://code.google.com/p/java2word

Saya menerapkan API ini yang disebut Java2Word. dengan beberapa baris kode, Anda dapat menghasilkan satu Dokumen Microsoft Word.

Misalnya.:

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

Ada beberapa contoh cara menggunakan. Pada dasarnya Anda membutuhkan satu file jar. Beri tahu saya jika Anda memerlukan informasi lebih lanjut tentang cara menyiapkannya.

* Saya menulis ini karena kami memiliki satu kebutuhan nyata dalam sebuah proyek. Selengkapnya di blog saya:

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

sorak Leonardo

Sunting : Proyek dalam tautan dipindahkan ke https://github.com/leonardoanalista/java2word

Leonardo
sumber
1
Sudahkah Anda mengujinya menggunakan MS Word yang sebenarnya? Saya telah berhasil membuat file yang dapat dibaca OpenOffice dan LibreOffice tetapi tidak dapat dibaca MSWord di windows. (Saya telah melaporkan masalah ini di code.google.com/p/java2word/issues/detail?id=16 )
Stein G. Strindhaug
2
Saya tidak dapat membuka file yang dihasilkan java2word menggunakan OpenOffice? Berfungsi dengan baik dengan Office 2010
Ashika Umanga Umagiliya
Apakah itu mendukung pembuatan file .docx? @Leonardo
MaheshVarma
Ne wproject home: github.com/leonardoanalista/java2word
vhunsicker
4

Coba Aspose.Words untuk Java, ini berjalan di OS apa pun tempat Java diinstal.

Ini akan mengeluarkan dokumen ke DOC, DOCX atau RTF jika Anda membutuhkan format keluaran MS Word. Semua didukung sama baiknya.

Dengan menggunakan API ini, Anda dapat membuat dokumen dari awal, secara harfiah dari node dan mengatur properti pemformatannya. Anda juga dapat menggunakan DocumentBuilder yang menyediakan metode tingkat yang lebih tinggi seperti membuat baris tabel, menyisipkan bidang, dll. Atau Anda dapat menyalin / menggabungkan / memindahkan bagian antara dokumen yang sudah dibuat sebelumnya, misalnya Anda ingin menyusun kontrak, ambil dan salin saja potongan-potongan dari beberapa dokumen dan Aspose.Words akan menggabungkan gaya, format daftar dll dengan benar dalam dokumen yang dihasilkan.

Anda akan dapat memasukkan bidang TOC menggunakan Aspose.Words, tetapi untuk hari ini, bidang TOC akan membutuhkan pembaruan bidang ketika dokumen dibuka di Microsoft Word. Namun, kami akan merilis dukungan penuh untuk bidang TOC di awal tahun 2010. Misalnya, akan membangun TOC lengkap seperti yang dilakukan MS Word.

Saya anggota tim Aspose.Words.

romeok
sumber
4

Itu hanya disebutkan sebentar sekali, jadi saya ingin memanggil perpustakaan docx4j, karena saya lebih sukses dengan docx4j daripada yang lainnya. Dukungan Apache POI untuk dokumen Word tidak terlalu baik. Juga, tidak seperti Aspose.Words, docx4j adalah perpustakaan open source.

Satu-satunya kelemahan adalah dengan docx4j Anda harus membuat dokumen format Office Open XML (docx) daripada dokumen format berbasis OLE2 (doc). Ini adalah format default untuk Word 2007, tetapi Word 2003 dan pengguna sebelumnya perlu menginstal paket kompatibilitas.

Joshua Lahir
sumber
3

Coba Aspose.Words untuk java.

Aspose.Words untuk Java adalah perpustakaan kelas lanjutan (komersial) untuk Java yang memungkinkan Anda untuk melakukan berbagai tugas pemrosesan dokumen secara langsung dalam aplikasi Java Anda.

Aspose.Words untuk Java mendukung format DOC, OOXML, RTF, HTML dan OpenDocument. Dengan Aspose.Words Anda dapat membuat, memodifikasi, dan mengonversi dokumen tanpa menggunakan Microsoft Word.

Seki
sumber
2

Anda dapat menggunakan jembatan Java COM seperti JACOB . Jika dari sisi klien, opsi lain adalah menggunakan Javascript.

Gulzar Nazim
sumber
Terima kasih, tapi sepertinya ini harus dijalankan pada mesin windows, bukan? Saya mengklarifikasi OS mesin host setelah membaca ini, tetapi terima kasih atas infonya.
billjamesdev
Menggunakan JACOB di mesin server web akan membutuhkan Microsoft Word itu sendiri untuk diinstal di dalamnya, karena membuat dan memanipulasi dokumen Word melalui antarmuka COM memerlukan memunculkan contoh aplikasi Word yang sebenarnya. Secara umum, penggunaan Word + COM pada server multi-pengguna cukup bermasalah karena Word tidak dirancang untuk penggunaan semacam itu - misalnya menggandakan bagian dokumen secara tradisional dilakukan menggunakan objek Seleksi dan papan klip Windows, yang tidak terpikirkan di web- pengaturan mesin server. saya telah cukup terbakar oleh ini (meskipun telah menemukan beberapa tweak)
hello_earth
2

Saya telah menggunakan Aspose.Words untuk melakukan mail merge di .NET. Saya yakin mereka juga memiliki versi Java.

tvanfosson.dll
sumber
2

Ada alat bernama JODConverter yang menghubungkan ke kantor terbuka untuk mengekspos konverter format file, ada versi yang tersedia sebagai aplikasi web (ada di kucing jantan) yang Anda posting dan alat baris perintah. Saya telah menjalankan html dan mengonversinya ke .doc dan pdf dengan sukses itu dalam proyek yang cukup besar, belum ditayangkan tetapi saya pikir saya akan menggunakannya. http://sourceforge.net/projects/jodconverter/

Andrew Hancox
sumber
2

iText sangat mudah digunakan.

Jika Anda meminta file doc, Anda dapat memanggil abiword ( pengolah teks multi-os ringan gratis) dari baris perintah, ia memiliki beberapa opsi konversi format konversi.

cam2574
sumber
1

docx4j atau poi, keduanya adalah ASL v2

@wondersofcomputing: iText sebenarnya gratis dan open source

JasonPlutext
sumber
1

Setelah sedikit riset, saya menemukan iText, API pembuatan file PDF dan RTF. Saya rasa saya dapat menggunakan generasi RTF untuk membuat file yang dapat dibaca Doc yang kemudian dapat diedit menggunakan Doc dan disimpan kembali.

Adakah yang punya pengalaman dengan iText, digunakan dengan cara ini?

Bill, POI dan API iText sangat mirip dari perspektif pemrograman. Saya telah bekerja dengan keduanya di masa lalu dan menemukan keduanya mudah digunakan dan didokumentasikan dengan baik.

Dengan iText Anda mendapatkan keuntungan karena dapat beralih antar format (RTF dan PDF) dengan sedikit perubahan pada kode. Jika saya ingat dengan benar, konten akan disusun menggunakan panggilan yang sama dan kemudian disetel sebagai PDF atau RTF menggunakan beberapa baris kode.

Namun saya yakin pemformatan dalam RTF terbatas dibandingkan dengan DOC. Saya tidak tahu apakah Anda akan dapat menerapkan fitur-fitur canggih yang Anda cari (tabel, gambar sebaris) tanpa kerumitan yang layak, jika sama sekali.

Mengingat apa yang Anda katakan tentang HWPF yang tidak memiliki cukup fungsionalitas untuk kebutuhan Anda (saya hanya membahas sisi Excel POI) taruhan terbaik Anda mungkin adalah meyakinkan kekuatan bahwa PDF adalah teknologi terbaik untuk pekerjaan itu .

James McMahon
sumber
1

Saya telah mengembangkan file kata berbasis XML murni di masa lalu. Saya menggunakan .NET, tetapi bahasanya tidak masalah karena itu benar-benar XML. Ini bukan hal termudah untuk dilakukan (memiliki proyek yang membutuhkannya beberapa tahun yang lalu.) Ini hanya berfungsi di Word 2007 atau lebih tinggi - tetapi yang Anda butuhkan hanyalah kertas putih Microsoft yang menjelaskan apa yang dilakukan setiap tag. Anda dapat mencapai semua yang Anda inginkan dengan tag dengan cara yang sama seperti jika Anda menggunakan Word (tentu saja pada awalnya sedikit lebih menyakitkan.)

schmoopy
sumber
0

Setelah sedikit riset, saya menemukan iText , API pembuatan file PDF dan RTF. Saya rasa saya dapat menggunakan generasi RTF untuk membuat file yang dapat dibaca Doc yang kemudian dapat diedit menggunakan Doc dan disimpan kembali.

Adakah yang punya pengalaman dengan iText, digunakan dengan cara ini?

billjamesdev
sumber
Saya telah menggunakan iText untuk mengekspor ke RTF dan itu agak tidak stabil: TOC misalnya tidak berfungsi dengan baik dan sangat tidak mudah digunakan (dokumen kurang)
AlfaTeK
0

Namun kemungkinan lain, karena ini adalah aplikasi web.

Saya dapat membuat halaman HTML dengan tipe MIME yang disetel ke "application / msword", yang menyebabkan browser menelurkan Word yang mengimpor html dengan baik, memungkinkan pengeditan dan penyimpanan seolah-olah saya akan mengeluarkan dokumen Word asli.

Tabel berfungsi dengan baik, tetapi gambar saya belum berfungsi. Ini mungkin semudah hanya memberi tag di HTML, atau saya mungkin harus mengalirkan bagian terpisah dari respons yang berisi data gambar dalam biner, atau metode lain yang belum saya temukan. :)

billjamesdev
sumber
0

Meskipun ini lebih lambat dari permintaan, itu mungkin membantu orang lain. Docmosis menyediakan Java API untuk membuat dokumen dalam format doc, pdf, odt menggunakan dokumen sebagai template. Ia menggunakan OpenOffice sebagai mesin untuk melakukan konversi format. Manipulasi dokumen dan populasi dilakukan oleh Docmosis sendiri.

Paul Jowett
sumber