2009-02-25 7 views
17

Wie kann ich RTF Dokumente programmatisch in PDF konvertieren?Gibt es eine kostenlose Möglichkeit, RTF in PDF zu konvertieren?

+0

Was ist Ihr Kontext? Versuchen Sie, dies auf dem Desktop zu tun (die PDFCreator-Optionen unten sind gut)? Versuchen Sie dies als Teil einer Web-App? Etwas anderes? Bitte bearbeiten Sie Ihre Frage, um uns zu informieren. – acrosman

+0

Sind Sie auf Windows oder einer anderen Plattform? Sind Sie auf der Suche nach einer Java-Lösung für eine C/C++ - Lösung, oder ist das gleichgültig? Wird dies eine Server-Anwendung (zB ein Webserver) oder eine Desktop-Anwendung (mehrere Benutzer werden herunterladen und installieren?) – vladr

+0

Server-Seite auf Linux C++ oder Java – user63898

Antwort

16

OpenOffice.org kann im Server-Modus (d. H. Ohne GUI) ausgeführt werden, kann RTF-Dateien lesen und PDF-Dateien ausgeben.

+0

Dies ist plattformübergreifend, aber für Desktop-Anwendungen ungeeignet. Sehr gut geeignet um hinter einem Webserver zu laufen. – vladr

+0

Das stimmt. Da ich meist serverseitig Java benutze ist "plattformübergreifend" für mich viel wichtiger als "geeignet für eine Desktop-App" ;-) –

+0

Würde irgendjemand diesen Beitrag aktualisieren um einige Richtlinien zu serverseitigen Setup/Richtlinien zu geben? – Jerome

2

Verwenden Sie PDFCreator, einen kostenlosen PDF-Drucker. Einfach in PDF drucken. Sie können dies über COM steuern. Beispielcode befindet sich im COM-Ordner des Installationsverzeichnisses.

+2

Das funktioniert natürlich nur unter Windows. – vladr

2

PDFCreator for windows ist am einfachsten für einzelne Dokumente.

Es ist auch möglich, PDF-Erstellung für große Sätze von Dokumenten zu automatisieren, indem Sie sie in XML konvertieren und XSLT und XSL-FO verwenden. Dafür gibt es lots of tutorials.

Für eine bestimmte Sprache, wie z. B. Python, existieren Bibliotheken, die ziemlich trivial nach PDF ausgeben.

Der einzige Vorteil von XML gegenüber anderen einfacheren Lösungen ist die Erweiterbarkeit. Sie können Ihr Dokument auch programmatisch in RTF, HTML, TXT oder einem beliebigen anderen Textformat ausgeben.

+0

Dies funktioniert natürlich nur unter Windows. Leider ist noch nicht klar, für welche Plattform die Lösung benötigt wird. – vladr

+0

natürlich. Obwohl die XSLT-Lösung für fast jede Plattform funktioniert. –

14

Sie haben eine Reihe von Optionen abhängig von:

  • die Plattform (en) Ihre Anwendung auf
  • ausgeführt wird, ob Ihre Anwendung eine Server-Anwendung sein wird (zB ein Web-Service, den Sie Einmal eingerichtet und dann ausgeführt) oder eine weit verbreitete Desktop-Anwendung (z. B. etwas, das von vielen Benutzern leicht heruntergeladen und installiert werden kann)
  • ob Sie bereit sind, wenig oder mehr Programmieraufwand in die Lösung zu bringen
  • ob Sie flexibel in Bezug auf die Programmiersprache sind Sie

Hier sind einige Möglichkeiten nutzen:

  1. PDFCreator + COM
    • nur Windows
    • geeignet sowohl für Desktop- und Server Anwendungen
    • mittlerer Programmieraufwand
    • jede Sprache, die Sie COM
  2. OpenOffice (+ JODConverter - optional) zu sprechen erlaubt
    • Plattformübergreifend (Windows, Linux, etc.)
    • geeignet für Server-Anwendungen, wie Openoffice eine 100MB + Download
    • niedrige Programmieraufwand
    • Java (bei Verwendung von JODConverter) oder jede Sprache ist, die mit OpenOffice's UNO
  3. Schnittstelle kann
  4. IText + Apache POI
    • Plattformübergreifend (Windows, Linux usw.)
    • geeignet für Desktop- und Serveranwendungen
    • hohen Programmieraufwand
    • Java

EDIT

Hier ist ein older post, die einige Gemeinsamkeiten mit Ihrer Frage hat.


EDIT 2

ich Ihre Kommentare sehen, die Sie auf Linux sind und offen für entweder C++ oder Java. verwenden Definitiv Option 2.

  • JODConverter (Java): Die Bibliothek übernimmt OpenOffice in Headless Mode von Laich- und Uno, um es in Ihrem Namen zu sprechen. Sie geben JODConverter mit einem Eingabe- und Ausgabedateinamen sowie den Eingabe- und Ausgabetypen (z. B. rtf und pdf) an, und wenn es zu Ihnen zurückkehrt, ist die Ausgabedatei bereit.
  • C++: Sie können force + exec ein (oder mehr, für Load Balancing) OpenOffice-Instanzen im Headless-Modus (soffice wird für UNO-Anforderungen auf einem Sockel zB Port 8100 hören). Von Ihrer Anwendung Uno/CPP anweisen, OpenOffice zu führen Umwandlung die gleiche Art und Weise JODConverter ist (siehe JODConverter Quellcode, wie dies zu tun.)

/opt/openoffice.org3/program/soffice.bin \
-accept=socket,host=127.0.0.1,port=8100;urp; \
-headless -nocrashreport -nodefault \
-nolockcheck -nologo -norestore

Ich verwende erfolgreich JODConverter von einer Java-Anwendung verschiedene Dokumenttypen (einige Dokumente dynamisch aus Vorlagen erzeugt) zu pdf zu konvertieren.

+0

Wie kombiniere ich iText mit poi, um existierende rtf zu konvertieren (mit Text bereits innen mit Design) – user63898

+0

Vielleicht möchten Sie eine neue Frage stellen, die spezifisch für die Kombination der beiden ist. Wie gesagt, der Programmieraufwand ist hoch. Ich weiß, dass es getan wurde, siehe chsrinivas123's Beitrag auf http://www.experts-exchange.com/Software/Server_Software/Application_Servers/Java/Q_23023116.html. – vladr

+0

iText unterstützt RTF nicht direkt, es ist zuerst erforderlich, um Ihr Dokument in HTML \ XHTML zu konvertieren, was im Grunde bedeutet, eine andere Ebene, die höchstwahrscheinlich nicht genau wie die ursprüngliche RTF angezeigt wird, nur versucht, war nicht zufrieden, noch auf der Suche . – Stavm

0

PrimoPDF. Es fungiert als virtueller Drucker, also druckt man einfach darauf, und schon erscheint ein PDF.

3

Vier Jahre spät zur Party hier, aber ich benutze Ted in meiner Web-Anwendung.Ich generiere RTF programmgesteuert, dann verwenden Sie das Skript rtf2pdf.sh, das im Paket enthalten ist, um das PDF zu generieren. Ich habe versucht, OOo und unoconv vorher, aber Ted erwies sich schneller und zuverlässiger in meiner Anwendung.

+1

Ich sehe, dass Ted keine Möglichkeit hat, den versteckten Text der RTF-Datei in der konvertierten PDF-Datei zu verstecken. –

1

LibreOffice kann RTF-Dokumente über die Befehlszeile in PDF konvertieren.

Here sind die Anweisungen, um es auf CentOS zu installieren.

Und dies ist ein Beispiel zu initiieren Umwandlung von PHP-Code:

<?php shell_exec('libreoffice4.2 --headless --invisible --norestore --convert-to pdf test.rtf'); ?> 
+0

Schön, vielen Dank – dns

+0

Von all den Optionen habe ich diese Option vor etwa 2 Monaten überprüft, und es ist wahrscheinlich das Schlimmste für mich, es hat die RTF-Struktur total falsch interpretiert und ich kann nicht sagen, dass ich es empfehle, es sogar klein zu machen und einfache Dokumente. geschweige denn kommerzielle Nutzung. Wenn Sie nicht auf die Befehlszeilenoption zurückgreifen, erhalten Sie mit Open Office bessere Ergebnisse, obwohl Sie mehr Code von Ihrer Seite benötigen. – Stavm