Frage

Ich habe eine neue App ich arbeiten werde, wo ich ein Word-Dokument zu erzeugen, Tabellen, Grafiken, ein Inhaltsverzeichnis und Text enthält. Was ist eine gute API für diesen Einsatz? Wie sicher sind Sie, dass es unterstützt Grafiken, Inhaltsverzeichnisse und Tabellen? Was sind einige versteckte Gotcha die in ihnen mit?

Einige Erläuterungen:

  • Ich kann ein PDF nicht ausgegeben, sondern ein Word-Dokument möchten.
  • Sie sind mit MS Word 2003 (oder 2007) nicht Openoffice
  • Anwendung läuft auf * nix-app-Server

Es wäre schön, wenn ich mit einer Vorlage doc beginnen konnte und nur in einigen Räumen mit Tabellen, Grafiken zu füllen, etc.

Edit: Einige gute Antworten unten, jede mit ihren eigenen Fehlern so weit wie meine aktuellen Situation. Schwer, eine „endgültige Antwort“ von ihnen zu holen. Denke, ich werde es offen lassen, und hoffen auf bessere Lösungen geschaffen werden.

Edit: Das Openoffice UNO-Projekt scheint am nächsten zu sein, was ich gefragt. Während POI sicherlich mehr Mainstream, es ist zu unreif für das, was ich will.

War es hilfreich?

Lösung

Im Jahr 2007 mein Projekt erfolgreich verwendet OpenOffice.org Universal Network Objects (UNO) Schnittstelle programmatisch MS-Word kompatible Dokumente (* .doc) zu erzeugen, sowie entsprechenden PDF-Dokumente aus einer Java-Web-Anwendung (ein Struts / JSP-Framework).

Openoffice UNO lässt Sie auch bauen MS-Office-kompatible Diagramme, Tabellen, Präsentationen, etc. Wir konnten dynamisch anspruchsvolle Word-Dokumente erstellen, einschließlich Grafiken und Tabellen.

Wir vereinfacht den Prozess durch die Verwendung Vorlage MS-Word-Dokumente mit Lesezeichen in die fügt die Software eingefügt Inhalt Sie jedoch Dokumente von Grund auf neu bauen. Das Ziel war, die Software generieren Bericht Dokumente zu haben, die geteilt werden könnten und weiter von den Endnutzern gezwickt, bevor sie in das PDF für die Auslieferung und Archivierung zu konvertieren.

Openoffice verwenden anstelle von MS-Office

Sie können Produkte Dokumente in Openoffice-Formate optional, wenn Benutzer. In unserem Fall wollen, dass die Benutzer MS-Office-Tools verwenden.

UNO ist innerhalb der Openoffice Suite enthalten. Wir haben einfach unsere Java-Anwendung auf UNO-bezogenen Bibliotheken innerhalb der Suite verbunden. Ein Openoffice Software Development Kit (SDK) ist enthalten, beispielsweise Anwendungen zur Verfügung und Handbuch UNO Entwickler.

habe ich nicht untersucht, ob die neueste Openoffice UNO MS-Office 2007 Open XML Dokumentformate erzeugen kann.

Die wichtigen Dinge über Openoffice UNO sind:

  1. Es ist Freeware
  2. Es unterstützt mehrere Sprachen (zum Beispiel Visual Basic, Java, C ++ und andere).
  3. Es ist plattformunabhängig (Windows, Linux, Unix, etc.).

Hier sind einige nützliche Web-Sites:

Andere Tipps

Ich denke, Apache POI die Arbeit erledigen kann. Ein mögliches Problem abhängig von der Verwendung auf Ihr Ziel durch die Tatsache verursacht wird, dass HWPF ist nach wie vor in der frühen Entwicklung.

  

HWPF   ist der Satz von APIs zum Lesen und   Schreiben Microsoft Word 97 (-XP)   Dokumente mit (nur) Java.

Sie könnten so: http://code.google.com/p/java2word

Ich implementiert diese API genannt Java2Word. mit ein paar Zeilen Code, können Sie ein Microsoft Word-Dokument erzeugen.

Zum Beispiel:.

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

Es gibt einige Beispiele, wie zu benutzen. Grundsätzlich müssen Sie eine JAR-Datei. Lassen Sie uns wissen, wenn Sie weitere Informationen benötigen, wie es eingerichtet werden.

* Ich schrieb dies, 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 : Projekt in Verbindung bewegt https://github.com/leonardoanalista / java2word

Versuchen Aspose.Words für Java, es läuft auf jedem Betriebssystem, wo Java installiert ist.

Es wird ausgegeben, das Dokument zu DOC, DOCX oder RTF, wenn Sie ein MS Word-Ausgabeformat benötigen. Alle sind gleich gut unterstützt.

Mit dieser API Verwenden Sie ein Dokument von Grund auf neu erstellen können, buchstäblich von Knoten und deren Formatierungseigenschaften eingestellt. Sie können auch eine Document verwenden, die eine Tabellenzeile höhere Ebene Methoden wie schaffen bietet, ein Feld usw. einfügen Sie können auch kopieren / join / verschieben Abschnitte zwischen bestehenden Pre erstelltes Dokument, sagen, Sie wollen einen Vertrag montieren, einfach packen und kopieren Stücke aus mehreren Dokumenten und Aspose.Words werden Stile, Listenformatierung usw. ordnungsgemäß in dem resultierenden Dokument zusammenführen.

können Sie ein TOC-Feld einfügen Aspose.Words verwenden, aber ab heute wird das TOC-Feld ein Feld-Update erforderlich, wenn das Dokument in Microsoft Word geöffnet wird. Allerdings werden wir die volle Unterstützung für TOC Felder Anfang 2010 Z. B. freizugeben es baut kompletten TOC als MS Word es funktioniert.

Ich bin auf dem Aspose.Words Team.

Es wurde nur einmal kurz erwähnt, so möchte ich die docx4j Bibliothek rufen, da ich mehr Erfolg mit docx4j als alles andere hatte. Apache POI-Unterstützung für Word-Dokumente ist nicht sehr gut. Auch im Gegensatz zu Aspose.Words, docx4j ist eine Open-Source-Bibliothek.

Der einzige Nachteil ist mit docx4j Sie haben Office Open XML (DOCX) Format Dokumente statt OLE2-basierte (doc) Format-Dokumente zu erstellen. Dies ist das Standardformat für Word 2007, aber Word 2003 und frühere Benutzer müssen ein Kompatibilitätspaket installieren.

Versuchen Sie Aspose.Words für Java.

  

Aspose.Words für Java ist eine erweiterte (kommerzielle) Klassenbibliothek für Java, die Sie eine große Auswahl von Dokumentenverarbeitungsaufgaben direkt in Ihren Java-Anwendungen ausführen kann.

     

Aspose.Words für Java unterstützt DOC, OOXML, RTF, HTML und Opendocument-Formate. Mit Aspose.Words können Sie erzeugen, ändern und Dokumente konvertieren, ohne Microsoft Word zu verwenden.

Sie können eine Java COM Brücke verwenden wie JACOB . Wenn es von Client-Seite ist, wäre eine weitere Option Javascript zu verwenden.

Ich habe verwendet Aspose.Words Seriendruck in .NET zu tun. Ich glaube, dass sie auch eine Java-Version.

Es ist ein Werkzeug JODConverter genannt, die in offenes Büro hakt es Dateiformatkonverter zu belichten, gibt es Varianten als Webapp (sitzt in tomcat), die Sie und ein Kommandozeilen-Tool erstellen. Ich habe es an und die Umstellung auf .doc und pdf erfolgreich es ist in einem ziemlich großen Projekt Brennen html, nicht leben gegangen noch nicht, aber ich denke, ich werde es mit werden. http://sourceforge.net/projects/jodconverter/

iText ist wirklich einfach zu bedienen.

Wenn Sie requiere doc Dateien, die Sie anrufen können abiword (free lightweigh Multi-OS-Text procesor) von der Kommandozeile, es mehrere Konvertierungsformat hat konvertieren Optionen.

docx4j oder Poi, beide sind ASL v2

@wondersofcomputing: iText ist eigentlich kostenlos und Open Source

  

Nach einer wenig mehr Forschung, stieß ich auf iText, PDF und RTF-Datei Erstellung API. Ich glaube, ich kann die RTF-Generation verwenden, um eine Doc-lesbare Datei zu erstellen, die dann bearbeitet werden können Doc und wieder gespeichert werden.

     

Wer noch keine Erfahrung mit iText hat, auf diese Weise verwendet?

Bill, die POI und iText API ist sehr ähnlich aus einer Programmiersprache Perspektive. Ich habe mit beiden in der Vergangenheit gearbeitet und fand sie sowohl einfach zu bedienen und gut dokumentiert.

Mit iText gewinnen Sie den Vorteil, zwischen verschiedenen Formaten (RTF und PDF) mit geringfügigen Änderungen an den Code wechseln zu können. Wenn ich mich richtig erinnere der Inhalt wird angelegt die gleichen Anrufe und anschließend als PDF oder RTF setzt ein paar Zeilen Code.

Aber ich glaube, die Formatierung in RTF begrenzt ist im Vergleich zu DOC. Ich weiß nicht, ob Sie in der Lage sein werden, die erweiterten Funktionen, die Sie suchen (Tabellen, Inline-Bilder) ohne eine anständige Menge Ärger, wenn überhaupt zu realisieren.

Nach dem, was Sie gesagt haben, dass etwa HWPF nicht genügend Funktionalität für Ihre Bedürfnisse mit der beste Wette, dass PDF kann sein, um die Kräfte zu überzeugen, dass (ich nur mit der Excel-Seite des POI beschäftigt haben) ist die beste Technologie für den Job .

Ich habe reine XML-basierten Textdateien in der Vergangenheit entwickelt. Ich verwendete .NET, aber die Sprache sollte keine Rolle spielen, da es wirklich XML ist. Es war nicht die einfachste Sache (hatte ein Projekt, das es vor ein paar Jahren erforderlich.) Zu tun, um diese funktionieren nur in Word 2007 oder höher - aber alles, was Sie brauchen, ist Whitepaper von Microsoft, die beschreiben, was jeden Tag tut. Sie können alle erreichen Sie mit den Tags als die gleiche Art und Weise möchten, wenn Sie Word wurden mit (natürlich ein wenig schmerzhafter zunächst.)

Nach einer wenig mehr Forschung, stieß ich auf iText , ein PDF und RTF-Datei erstellen API. Ich glaube, ich kann die RTF-Generation verwenden, um eine Doc-lesbare Datei zu erstellen, die dann bearbeitet werden können Doc und wieder gespeichert werden.

Wer noch keine Erfahrung mit iText hat, auf diese Weise verwendet?

Eine weitere Möglichkeit, da dies ein Web-App ist.

konnte ich eine HTML-Seite mit dem MIME-Typ „application / msword“, die der Browser Wort, um laichen verursacht gesetzt machen, die die HTML ganz gut eingeführten Änderungen ermöglichen und Speichern als ob ich Ausgang würde eine echte Word-Dokument.

Tabellen funktionieren, aber Bilder, die ich noch nicht bekommen hatte zu arbeiten. Es kann so einfach sein wie nur einen Tag in der HTML, oder ich kann die Bilddaten in binärem enthält, oder eine andere Methode, die ich nicht kommen mit noch einem separaten Teil der Antwort streamen muß. :)

Auch wenn dies viel später als der Wunsch, könnte es andere helfen. Docmosis bietet ein Java-API für Dokumente in doc, pdf, odt-Format Dokumente als Vorlagen zu erstellen. Es nutzt Openoffice als Motor die Formatkonvertierungen durchzuführen. Dokumentenmanipulation und Bevölkerung erfolgt durch Docmosis selbst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top