Zengin Word belgeleri oluşturabilen bir Java API var mı? [kapalı]


111

Tablolar, grafikler, içindekiler tablosu ve metin içeren bir Word belgesi oluşturmam gereken yerlerde üzerinde çalışacağım yeni bir uygulamam var. Bunun için kullanılacak iyi bir API nedir? Grafikleri, ToC'leri ve tabloları desteklediğinden ne kadar eminsiniz? Bunları kullanırken bazı gizli bilgiler nelerdir?

Bazı açıklamalar:

  • Bir PDF çıktısı alamıyorum, bir Word belgesi istiyorlar.
  • OpenOffice değil, MS Word 2003 (veya 2007) kullanıyorlar
  • Uygulama * nix uygulama sunucusunda çalışıyor

Bir şablon belgeyle başlayıp bazı boşlukları tablolar, grafikler vb. İle doldursam iyi olurdu.

Düzenleme: Aşağıda, mevcut durumuma göre her biri kendi hataları olan birkaç iyi yanıt. Onlardan bir "son cevap" seçmek zor. Sanırım açık bırakacağım ve daha iyi çözümlerin yaratılmasını umuyorum.

Düzenleme: OpenOffice UNO projesi, istediğime en yakın gibi görünüyor. POI kesinlikle daha yaygın olsa da, istediğim şey için fazla olgunlaşmamış.


26
Bu soruyu en son düzenlendikten 30 ay sonra ve ilk sorulduktan 3 yıl sonra kapatmanın çok verimli olacağından emin değilim. Başlığı "Java API ile nasıl zengin Word belgeleri oluştururum?" Olarak değiştirirsem bu bunu düzeltir mi?
billjamesdev


Sen bir göz olabilir docxtemplater, https://github.com/edi9999/docxtemplater/ docx şablonlardan docx oluşturmak için oluşturulan bir kitaplık I
edi9999

1
Soru yeniden açılmalıdır. Soru, kurallara uyacak şekilde yeniden ifade edildi, bu nedenle, bu soruyu yeniden açma gücü olan herkesi aramak istiyorum. Önce soru şuydu: Word belgeleri oluşturmak için iyi bir Java API nedir? Şimdi soru şu: Zengin Word belgeleri oluşturabilen bir Java API var mı? Soru şimdi açıkça soran kişinin ne istediğine işaret ediyor: Grafikler, ToC'ler ve tablolarla Word belgeleri oluşturmak. Soru ayrıca artık "iyi" bir Java API istemiyor. İyi herkes için farklıdır.
Sjoerd Pottuit

Yanıtlar:


56

2007'de projem , bir Java Web uygulamasından (Struts / JSP çerçevesi) MS-Word uyumlu belgeler (* .doc) ve karşılık gelen PDF belgeleri oluşturmak için OpenOffice.org'un Evrensel Ağ Nesneleri (UNO) arayüzünü başarıyla kullandı .

OpenOffice UNO ayrıca MS-Office uyumlu grafikler, hesap tabloları, sunumlar vb. Oluşturmanıza da olanak tanır. Grafikler ve tablolar dahil olmak üzere dinamik olarak karmaşık Word belgeleri oluşturabildik.

Yazılımın içerik eklediği yer imi ekli şablon MS-Word belgelerini kullanarak süreci basitleştirdik, ancak belgeleri tamamen sıfırdan oluşturabilirsiniz. Amaç, yazılımın son teslim ve arşivleme için PDF'ye dönüştürmeden önce son kullanıcılar tarafından paylaşılabilecek ve daha fazla ince ayar yapılabilecek rapor belgeleri oluşturmasını sağlamaktı.

Kullanıcıların MS-Office yerine OpenOffice kullanmasını istiyorsanız, isteğe bağlı olarak OpenOffice formatlarında belgeler üretebilirsiniz. Bizim durumumuzda kullanıcılar MS-Office araçlarını kullanmak istiyor.

UNO, OpenOffice paketine dahildir. Java uygulamamızı paket içindeki UNO ile ilgili kitaplıklara bağladık. Örnek uygulamaları ve UNO Geliştirici Kılavuzunu içeren bir OpenOffice Yazılım Geliştirme Kiti (SDK) mevcuttur.

En son OpenOffice UNO'nun MS-Office 2007 Açık XML belge biçimlerini oluşturup oluşturmadığını araştırmadım.

OpenOffice UNO ile ilgili önemli şeyler şunlardır:

  1. Ücretsizdir
  2. Birden çok dili destekler (örn. Visual Basic, Java, C ++ ve diğerleri).
  3. Platformdan bağımsızdır (Windows, Linux, Unix, vb.).

İşte bazı yararlı web siteleri:


1
Şimdiye kadar bu, istediğim araç setiyle en uyumlu olanı. "Kabul edildi" olarak işaretleyeceğim. POI'nin daha yaygın olduğunu tam olarak kabul etsem de, henüz istediğim işlevselliğe sahip değil.
billjamesdev

30

Apache POI'nin işi yapabileceğini düşünüyorum . Amaçladığınız kullanıma bağlı olarak olası bir sorun, HWPF'nin hala erken geliştirme aşamasında olmasından kaynaklanıyor olabilir.

HWPF , (yalnızca) Java kullanarak Microsoft Word 97 (-XP) belgelerini okumak ve yazmak için kullanılan API kümesidir.


Grafik ve tablo olanakları hakkında herhangi bir bilginiz var mı? İçindekiler tablosu nasıl olur? İÇN'de bunları yaparken gerçek deneyime sahip olan var mı?
billjamesdev

1
POI belgelerine bakıldığında, bu HWPF'nin geliştirilmesinin çok erken olduğu ve "karmaşık" belgelerin dinamik olarak oluşturulması için değil, esas olarak bir .doc'tan metin okunmasına izin verdiği görülüyor.
billjamesdev

Daha karmaşık grafikleri / tabloları vs. işlediğine inanmıyorum
Brian Agnew


9

Bunu kullanabilirsiniz: http://code.google.com/p/java2word

Java2Word adlı bu API'yi uyguladım. birkaç satır kod ile bir Microsoft Word Belgesi oluşturabilirsiniz.

Örneğin.:

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

Nasıl kullanılacağına dair bazı örnekler var. Temel olarak bir jar dosyasına ihtiyacınız olacak. Nasıl kurulacağına dair daha fazla bilgiye ihtiyacın olursa bana haber ver.

* Bunu yazdım çünkü bir projede gerçek bir ihtiyacımız vardı. Blogumda daha fazlası:

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

şerefe Leonardo

Düzenleme : Bağlantıdaki proje https://github.com/leonardoanalista/java2word adresine taşındı


1
Gerçek MS Word kullanarak test ettiniz mi? OpenOffice ve LibreOffice'in okuyabildiği ancak MSWord'un Windows üzerinde okuyamadığı dosyalar oluşturmayı başardım. (Bu sorunu code.google.com/p/java2word/issues/detail?id=16 adresinde bildirdim )
Stein G. Strindhaug

2
OpenOffice kullanarak java2word tarafından oluşturulan dosyaları açamıyorum? Office 2010 ile iyi çalışıyor
Ashika Umanga Umagiliya

.Docx dosyalarının oluşturulmasını destekliyor mu? @Leonardo
MaheshVarma


4

Aspose.Words for Java'yı deneyin, Java'nın kurulu olduğu tüm işletim sistemlerinde çalışır.

Bir MS Word çıktı biçimine ihtiyacınız varsa, belgeyi DOC, DOCX veya RTF'ye çıkarır. Hepsi eşit derecede iyi desteklenmektedir.

Bu API'yi kullanarak, kelimenin tam anlamıyla düğümlerden sıfırdan bir belge oluşturabilir ve biçimlendirme özelliklerini ayarlayabilirsiniz. Ayrıca, bir tablo satırı oluşturmak, bir alan eklemek vb. Gibi daha üst düzey yöntemler sağlayan bir DocumentBuilder da kullanabilirsiniz. Veya önceden oluşturulmuş bir belge arasında bölümleri kopyalayabilir / birleştirebilir / taşıyabilirsiniz, örneğin bir sözleşme oluşturmak istediğinizi söyleyin, sadece alın ve kopyalayın Çeşitli belgelerden parçalar ve Aspose.Words ortaya çıkan belgede stilleri, liste biçimlendirmesini vb. düzgün bir şekilde birleştirecektir.

Aspose.Words kullanarak bir TOC alanı ekleyebileceksiniz, ancak bugün itibariyle, TOC alanı, belge Microsoft Word'de açıldığında bir alan güncellemesi gerektirecek. Ancak, 2010'un başlarında TOC alanları için tam destek sunacağız. Örneğin, MS Word'ün yaptığı gibi tam TOC oluşturacaktır.

Aspose.Words ekibindeyim.


4

Sadece bir kez kısaca bahsedilmişti, bu yüzden docx4j ile her şeyden daha fazla başarı elde ettiğim için docx4j kütüphanesine seslenmek istiyorum. Apache POI'nin Word belgeleri için desteği çok iyi değil. Ayrıca, Aspose.Words'ten farklı olarak, docx4j bir açık kaynak kitaplığıdır.

Tek dezavantaj, docx4j ile OLE2 tabanlı (doc) biçimli belgeler yerine Office Açık XML (docx) biçimli belgeler oluşturmanız gerektiğidir. Bu, Word 2007 için varsayılan biçimdir, ancak Word 2003 ve önceki kullanıcıların bir uyumluluk paketi yüklemeleri gerekecektir.


3

Aspose.Words for java'yı deneyin .

Aspose.Words for Java, Java uygulamalarınız içinde çok çeşitli belge işleme görevlerini doğrudan gerçekleştirmenizi sağlayan gelişmiş (ticari) bir Java sınıf kitaplığıdır.

Aspose.Words for Java, DOC, OOXML, RTF, HTML ve OpenDocument biçimlerini destekler. Aspose.Words ile belgeleri Microsoft Word kullanmadan oluşturabilir, değiştirebilir ve dönüştürebilirsiniz.


2

JACOB gibi bir Java COM köprüsü kullanabilirsiniz . İstemci tarafındaysa, başka bir seçenek de Javascript kullanmak olacaktır.


Teşekkürler, ama bu bir Windows makinesinde çalışmayı gerektirecek gibi görünüyor, değil mi? Bunu okuduktan sonra ana makinenin işletim sistemini netleştirdim, ancak bilgi için teşekkürler.
billjamesdev

JACOB'u web sunucusu makinesinde kullanmak, Microsoft Word'ün kendisinin yüklenmesini gerektirir, çünkü Word belgelerini COM arabirimi aracılığıyla oluşturmak ve değiştirmek, Word uygulamasının gerçek örneklerini ortaya çıkarmayı gerektirir. Genel olarak, Word + COM'un çok kullanıcılı bir sunucuda bu tür kullanımı oldukça sorunludur çünkü Word bu tür bir kullanım için tasarlanmamıştır - örneğin, belgenin bölümlerinin çoğaltılması geleneksel olarak Web'de düşünülemez olan Seçim nesnesi ve Windows panosu kullanılarak yapılır. sunucu makine ayarı. (bazı ince
ayarlar bulmuş olmama


2

Dosya formatı dönüştürücülerini ortaya çıkarmak için açık ofise bağlanan JODConverter adında bir araç var, gönderdiğiniz bir web uygulaması (tomcat'ta oturuyor) ve bir komut satırı aracı olarak mevcut sürümler var. Ona html atıyorum ve başarılı bir şekilde .doc ve pdf'e dönüştürüyorum, oldukça büyük bir projede, henüz yayına girmedim ama sanırım onu ​​kullanacağım. http://sourceforge.net/projects/jodconverter/


2

iText kullanımı gerçekten çok kolay.

Doc dosyalarına ihtiyacınız varsa , komut satırından abiword (ücretsiz lightweigh multi-os metin işlemcisi) çağırabilirsiniz , çeşitli dönüştürme formatı dönüştürme seçeneklerine sahiptir.



1

Biraz daha araştırmadan sonra, bir PDF ve RTF dosya oluşturma API'si olan iText ile karşılaştım. Sanırım daha sonra Doc kullanılarak düzenlenip yeniden kaydedilebilecek bir Doc tarafından okunabilir dosya oluşturmak için RTF neslini kullanabilirim.

Bu şekilde kullanılan iText deneyimi olan var mı?

Bill, POI ve iText API, programlama açısından çok benzer. Geçmişte her ikisiyle de çalıştım ve bunların hem kullanımı kolay hem de iyi belgelenmiş olduğunu gördüm.

İText ile, kodda küçük değişikliklerle formatlar (RTF ve PDF) arasında geçiş yapabilme avantajını elde edersiniz. Doğru hatırlıyorsam, içerik aynı aramalar kullanılarak düzenlenir ve ardından birkaç satır kod kullanılarak PDF veya RTF olarak ayarlanır.

Ancak RTF'deki biçimlendirmenin DOC ile karşılaştırıldığında sınırlı olduğuna inanıyorum. Aradığınız gelişmiş özellikleri (tablolar, satır içi görüntüler) makul miktarda güçlük çekmeden uygulayıp uygulayamayacağınızı bilmiyorum.

HWPF'nin ihtiyaçlarınız için yeterli işlevselliğe sahip olmadığını söylediğinize göre (ben sadece POI'nin Excel tarafını ele aldım) yapacağınız en iyi şey, güçleri PDF'nin iş için en iyi teknoloji olduğuna ikna etmek olabilir .


1

Geçmişte saf XML tabanlı kelime dosyaları geliştirdim. .NET kullandım, ancak dilin önemi olmamalı çünkü gerçekten XML. Yapılması en kolay şey değildi (birkaç yıl önce bunu gerektiren bir proje vardı.) Bunlar yalnızca Word 2007 veya üzerinde çalışıyor - ancak ihtiyacınız olan tek şey Microsoft'un her bir etiketin ne yaptığını açıklayan teknik raporu. Etiketlerle istediğiniz her şeyi Word kullanıyormuş gibi gerçekleştirebilirsiniz (elbette başlangıçta biraz daha zahmetli.)


0

Biraz daha araştırdıktan sonra iText ile karşılaştım , bir PDF ve RTF dosya oluşturma API'si olan . Sanırım daha sonra Doc kullanılarak düzenlenip yeniden kaydedilebilecek bir Doc tarafından okunabilir dosya oluşturmak için RTF neslini kullanabilirim.

Bu şekilde kullanılan iText deneyimi olan var mı?



0

Yine başka bir olasılık, çünkü bu bir web uygulaması.

MIME türü "application / msword" olarak ayarlanmış bir HTML sayfasını oluşturabildim, bu da tarayıcının, html'yi gayet iyi içe aktaran Word'ü oluşturmasına neden oldu ve tıpkı gerçek bir Word belgesi çıktılamış gibi düzenlemelere ve kaydetmeye izin verdi.

Tablolar iyi çalışıyor, ancak henüz çalışmadığım resimler. HTML'deki bir etiket kadar kolay olabilir veya görüntü verilerini ikili olarak içeren yanıtın ayrı bir bölümünü veya henüz bulamadığım başka bir yöntemi yayınlamam gerekebilir. :)


0

Bu talepten çok daha geç olsa da başkalarına yardımcı olabilir. Docmosis , belgeleri şablon olarak kullanarak doc, pdf, odt biçiminde belgeler oluşturmak için bir Java API sağlar. Biçim dönüşümlerini gerçekleştirmek için motor olarak OpenOffice kullanır. Belge manipülasyonu ve doldurma, Docmosis tarafından gerçekleştirilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.