Ich habe eine neue App, an der ich arbeiten werde, um ein Word-Dokument zu generieren, das Tabellen, Grafiken, ein Inhaltsverzeichnis und Text enthält. Was ist eine gute API dafür? Wie sicher sind Sie, dass es Diagramme, Inhaltsverzeichnisse und Tabellen unterstützt? Was sind einige versteckte Fallstricke, wenn man sie benutzt?
Einige Klarstellungen:
- Ich kann kein PDF ausgeben, sie möchten ein Word-Dokument.
- Sie verwenden MS Word 2003 (oder 2007), nicht OpenOffice
- Die Anwendung läuft auf dem * nix App-Server
Es wäre schön, wenn ich mit einem Vorlagendokument beginnen und nur einige Bereiche mit Tabellen, Grafiken usw. ausfüllen könnte.
Bearbeiten: Einige gute Antworten unten, jede mit ihren eigenen Fehlern in Bezug auf meine aktuelle Situation. Es ist schwer, eine "endgültige Antwort" von ihnen zu finden. Ich denke, ich lasse es offen und hoffe auf bessere Lösungen.
Bearbeiten: Das OpenOffice UNO-Projekt scheint dem, was ich verlangt habe, am nächsten zu kommen. Während POI sicherlich mehr Mainstream ist, ist es zu unreif für das, was ich will.
Antworten:
2007 verwendete mein Projekt erfolgreich die UNO-Schnittstelle ( Universal Network Objects ) von OpenOffice.org, um programmgesteuert MS-Word-kompatible Dokumente (* .doc) sowie entsprechende PDF-Dokumente aus einer Java-Webanwendung (einem Struts / JSP-Framework) zu generieren.
Mit OpenOffice UNO können Sie auch MS-Office-kompatible Diagramme, Tabellenkalkulationen, Präsentationen usw. erstellen. Wir konnten anspruchsvolle Word-Dokumente, einschließlich Diagramme und Tabellen, dynamisch erstellen.
Wir haben den Prozess vereinfacht, indem wir MS-Word-Vorlagen mit Lesezeicheneinfügungen verwendet haben, in die die Software Inhalte eingefügt hat. Sie können jedoch Dokumente vollständig von Grund auf neu erstellen. Ziel war es, dass die Software Berichtsdokumente generiert, die von Endbenutzern gemeinsam genutzt und weiter optimiert werden können, bevor sie zur endgültigen Lieferung und Archivierung in PDF konvertiert werden.
Sie können optional Dokumente in OpenOffice-Formaten erstellen, wenn Benutzer OpenOffice anstelle von MS-Office verwenden sollen. In unserem Fall möchten die Benutzer MS-Office-Tools verwenden.
UNO ist in der OpenOffice-Suite enthalten. Wir haben unsere Java-App einfach mit UNO-bezogenen Bibliotheken innerhalb der Suite verknüpft. Ein OpenOffice Software Development Kit (SDK) mit Beispielanwendungen und dem UNO-Entwicklerhandbuch ist verfügbar.
Ich habe nicht untersucht, ob das neueste OpenOffice UNO MS-Office 2007 Open XML-Dokumentformate generieren kann.
Die wichtigen Dinge bei OpenOffice UNO sind:
Hier sind einige nützliche Websites:
quelle
Ich denke, Apache POI kann den Job machen. Ein mögliches Problem, das von der angestrebten Verwendung abhängt, kann durch die Tatsache verursacht werden, dass sich HWPF noch in der frühen Entwicklung befindet.
quelle
Sie können dies verwenden: http://code.google.com/p/java2word
Ich habe diese API namens Java2Word implementiert. Mit wenigen Codezeilen können Sie ein Microsoft Word-Dokument generieren.
Z.B.:
Es gibt einige Beispiele zur Verwendung. Grundsätzlich benötigen Sie eine JAR-Datei. Lassen Sie mich wissen, wenn Sie weitere Informationen zum Einrichten benötigen.
* Ich habe das geschrieben, weil wir eine echte Notwendigkeit in einem Projekt hatten. Mehr in meinem Blog:
http: //leonardo-pinho.blogspot.com/2010/07/java2word-word-document-generator-from.html *
Prost Leonardo
Bearbeiten : Das Projekt im Link wurde auf https://github.com/leonardoanalista/java2word verschoben
quelle
Probieren Sie Aspose.Words für Java aus. Es läuft auf jedem Betriebssystem, auf dem Java installiert ist.
Das Dokument wird an DOC, DOCX oder RTF ausgegeben, wenn Sie ein MS Word-Ausgabeformat benötigen. Alle werden gleich gut unterstützt.
Mit dieser API können Sie ein Dokument von Grund auf neu erstellen, buchstäblich aus Knoten, und deren Formatierungseigenschaften festlegen. Sie können auch einen DocumentBuilder verwenden, der übergeordnete Methoden wie das Erstellen einer Tabellenzeile, das Einfügen eines Felds usw. bereitstellt. Oder Sie können Teile zwischen vorhandenen vorgefertigten Dokumenten kopieren / verbinden / verschieben, z. B. einen Vertrag zusammenstellen, einfach greifen und kopieren Teile aus mehreren Dokumenten und Aspose.Words führen Stile, Listenformatierungen usw. im resultierenden Dokument ordnungsgemäß zusammen.
Sie können ein Inhaltsverzeichnisfeld mit Aspose.Words einfügen. Ab heute erfordert das Inhaltsverzeichnisfeld eine Feldaktualisierung, wenn das Dokument in Microsoft Word geöffnet wird. Wir werden jedoch Anfang 2010 die vollständige Unterstützung für Inhaltsverzeichnisfelder veröffentlichen. Beispielsweise wird das vollständige Inhaltsverzeichnis so erstellt, wie es MS Word tut.
Ich bin im Aspose.Words-Team.
quelle
Es wurde nur einmal kurz erwähnt, daher möchte ich die docx4j-Bibliothek aufrufen, da ich mit docx4j mehr Erfolg hatte als alles andere. Die Unterstützung von Apache POI für Word-Dokumente ist nicht sehr gut. Im Gegensatz zu Aspose.Words ist docx4j eine Open-Source-Bibliothek.
Der einzige Nachteil besteht darin, dass Sie mit docx4j Dokumente im Office Open XML-Format (docx) und keine Dokumente im OLE2-basierten Format (doc) erstellen müssen. Dies ist das Standardformat für Word 2007, aber Benutzer von Word 2003 und früheren Versionen müssen ein Kompatibilitätspaket installieren.
quelle
Versuchen Sie Aspose.Words für Java.
quelle
Sie können eine Java COM-Brücke wie JACOB verwenden . Wenn es von Client-Seite ist, wäre eine andere Option die Verwendung von Javascript.
quelle
Ich habe Aspose.Words verwendet, um Seriendruck in .NET durchzuführen . Ich glaube, dass sie auch eine Java-Version haben.
quelle
Es gibt ein Tool namens JODConverter, das sich in Open Office einbindet, um die Dateiformatkonverter verfügbar zu machen. Es gibt Versionen als Webapp (befindet sich in Tomcat), auf die Sie posten, und ein Befehlszeilentool. Ich habe HTML darauf abgefeuert und erfolgreich in .doc und pdf konvertiert. Es ist ein ziemlich großes Projekt. Ich bin noch nicht live gegangen, aber ich denke, ich werde es verwenden. http://sourceforge.net/projects/jodconverter/
quelle
iText ist sehr einfach zu bedienen.
Wenn Sie Dokumentdateien anfordern, können Sie abiword (kostenloser Lightweigh-Multi-OS-Textprozessor) über die Befehlszeile aufrufen. Es stehen mehrere Konvertierungsoptionen für das Konvertierungsformat zur Verfügung.
quelle
docx4j oder poi, beide sind ASL v2
@wondersofcomputing: iText ist eigentlich kostenlos und Open Source
quelle
Bill, der POI und die iText-API sind sich aus Programmiersicht sehr ähnlich. Ich habe in der Vergangenheit mit beiden gearbeitet und fand sie einfach zu bedienen und gut dokumentiert.
Mit iText erhalten Sie den Vorteil, dass Sie mit geringfügigen Änderungen am Code zwischen den Formaten (RTF und PDF) wechseln können. Wenn ich mich richtig erinnere, wird der Inhalt mit denselben Aufrufen angelegt und dann mit einigen Codezeilen als PDF oder RTF festgelegt.
Ich glaube jedoch, dass die Formatierung in RTF im Vergleich zu DOC begrenzt ist. Ich weiß nicht, ob Sie die von Ihnen gesuchten erweiterten Funktionen (Tabellen, Inline-Bilder) ohne großen Aufwand implementieren können, wenn überhaupt.
Angesichts dessen, was Sie gesagt haben, dass HWPF nicht über genügend Funktionen für Ihre Anforderungen verfügt (ich habe mich nur mit der Excel-Seite des POI befasst), ist es möglicherweise am besten, die Befugnisse davon zu überzeugen, dass PDF die beste Technologie für diesen Job ist .
quelle
Ich habe in der Vergangenheit reine XML-basierte Word-Dateien entwickelt. Ich habe .NET verwendet, aber die Sprache sollte keine Rolle spielen, da es sich wirklich um XML handelt. Es war nicht die einfachste Sache (hatte ein Projekt, das es vor ein paar Jahren erforderte). Diese funktionieren nur in Word 2007 oder höher - aber alles, was Sie brauchen, ist das Whitepaper von Microsoft, das beschreibt, was jedes Tag tut. Sie können mit den Tags alles erreichen, was Sie wollen, als ob Sie Word verwenden würden (anfangs natürlich etwas schmerzhafter).
quelle
Nach ein wenig mehr Recherche stieß ich auf iText , eine API zur Erstellung von PDF- und RTF-Dateien. Ich denke, ich kann die RTF-Generierung verwenden, um eine Doc-lesbare Datei zu erstellen, die dann mit Doc bearbeitet und erneut gespeichert werden kann.
Hat jemand Erfahrung mit iText, das auf diese Weise verwendet wird?
quelle
Noch eine andere Möglichkeit, da dies eine Web-App ist.
Ich konnte eine HTML-Seite mit dem MIME-Typ "application / msword" rendern, was dazu führte, dass der Browser Word erzeugte, das den HTML-Code einwandfrei importierte, Änderungen ermöglichte und speicherte, als würde ich ein echtes Word-Dokument ausgeben.
Tabellen funktionieren gut, aber Bilder, die ich noch nicht zum Laufen gebracht hatte. Es kann so einfach sein wie nur ein Tag im HTML, oder ich muss möglicherweise einen separaten Teil der Antwort streamen, der die Bilddaten in Binärform enthält, oder eine andere Methode, die ich mir noch nicht ausgedacht habe. :) :)
quelle
Auch wenn dies viel später als die Anfrage ist, kann es anderen helfen. Docmosis bietet eine Java-API zum Erstellen von Dokumenten im Dokument-, PDF- und ODT-Format unter Verwendung von Dokumenten als Vorlagen. Es verwendet OpenOffice als Engine, um die Formatkonvertierungen durchzuführen. Die Manipulation und Auffüllung von Dokumenten wird von Docmosis selbst durchgeführt.
quelle