2009-02-25 19 views
17

¿Cómo puedo convertir mediante programación documentos RTF al PDF?¿Existe una forma gratuita de convertir RTF a PDF?

+0

¿Cuál es su contexto? ¿Estás intentando hacer esto en el escritorio (las opciones de PDF Creator a continuación son buenas)? ¿Estás tratando de hacer esto como parte de una aplicación web? ¿Algo más? Por favor edite su pregunta para hacernos saber. – acrosman

+0

¿Estás en Windows o en alguna otra plataforma? ¿Está buscando una solución java, una solución C/C++ o es indiferente? ¿Será esto una aplicación de servidor (por ejemplo, un servidor web) o una aplicación de escritorio (múltiples usuarios lo descargarán e instalarán?) – vladr

+0

en el lado del servidor en linux C++ o java – user63898

Respuesta

16

OpenOffice.org se puede ejecutar en modo de servidor (es decir, sin ninguna GUI), puede leer archivos RTF y puede generar archivos PDF.

+0

Esto es multiplataforma, pero no apto para aplicaciones de escritorio. Muy adecuado para correr detrás de un servidor web, sin embargo. – vladr

+0

Eso es verdad. Como me dedico principalmente al lado del servidor Java, "multiplataforma" es mucho más importante para mí que "adecuado para una aplicación de escritorio" ;-) –

+0

¿Alguien actualizaría esta publicación para dar algunas pautas sobre la configuración/directrices del lado del servidor? – Jerome

2

Utilice PDFCreator, una impresora gratuita de PDF. Solo imprime en pdf. Puedes controlar esto a través de COM. El código de ejemplo está en la carpeta COM del directorio de instalación.

+2

Esto, por supuesto, solo funcionará en Windows. – vladr

2

PDFCreator for windows es el más fácil para documentos individuales.

También es posible automatizar la creación de PDF para grandes conjuntos de documentos convirtiéndolos a XML y usando XSLT y XSL-FO. Hay lots of tutorials para esto por ahí.

Para un lenguaje específico, como python, las bibliotecas existen para enviar a PDF de forma bastante trivial.

La única ventaja de XML sobre otras soluciones más simples es la extensibilidad. También puede generar su documento mediante programación en RTF, HTML, TXT o casi cualquier otro formato de texto.

+0

Esto, por supuesto, solo funcionará en Windows. Desafortunadamente, aún no se ha aclarado para qué plataforma se requiere la solución. – vladr

+0

naturalmente. Aunque la solución XSLT funcionará para casi cualquier plataforma. –

14

Usted tiene una serie de opciones dependiendo de:

  • la plataforma (s) su solicitud se ejecuta en
  • si su aplicación será una aplicación de servidor (por ejemplo, un servicio web que usted configurado una vez y luego se ejecuta), o una aplicación de escritorio ampliamente disponible (por ejemplo, algo que debe ser fácilmente descargable e instalable por muchas personas)
  • si está dispuesto a poner poco o más esfuerzo de programación para que la solución funcione
  • si usted es flexible en cuanto al lenguaje de programación que va a utilizar

Estas son algunas opciones:

  1. PDFCreator + COM
    • Windows solamente
    • Válido para PC y el servidor aplicaciones
    • esfuerzo de programación medio
    • cualquier lenguaje que le permite hablar COM
  2. OpenOffice (+ JODConverter - opcional)
    • multiplataforma (Windows, Linux, etc.)
    • adecuado para aplicaciones de servidor, como OpenOffice es un 100MB + descargar
    • esfuerzo de programación de bajo
    • Java (si se utiliza JODConverter), o cualquier otro idioma que puede interactuar con OpenOffice's UNO
  3. IText + Apache POI
    • multiplataforma (Windows, Linux, etc.)
    • apta para aplicaciones de escritorio y servidor
    • alto esfuerzo de programación Java

EDITAR

He aquí un older post que tiene algo en común con su pregunta.


EDIT 2

Veo por sus comentarios que usted está en Linux y abierto a cualquiera de C++ o Java. Definitivamente el uso opción 2.

  • JODConverter (Java): la biblioteca se encarga de desove OpenOffice en modo sin cabeza y hablando Uno a él en su nombre. Proporciona JODConverter con un nombre de archivo de entrada y salida, así como los tipos de entrada y salida (por ejemplo, rtf y pdf), y cuando lo devuelve, el archivo de salida está listo.
  • C++: puede fork + exec uno (o más, para balanceo de carga) instancias de OpenOffice en modo headless (soffice escuchará solicitudes UNO en un socket ej. Puerto 8100.) Desde su aplicación use Uno/CPP para ordenar a OpenOffice que realice la conversión de la misma manera no JODConverter (ver el código fuente para JODConverter cómo hacer esto.)

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

estoy utilizando con éxito JODConverter desde una aplicación Java para convertir tipos de documentos diversos (algunos documentos generados dinámicamente a partir de plantillas) para pdf.

+0

cómo combinar iText con poi para convertir rtf existente (con el texto ya dentro con el diseño) – user63898

+0

Es posible que desee hacer una nueva pregunta específica para combinar los dos. Como dije, el esfuerzo de programación es alto. Sé que ya se hizo, vea la publicación de chsrinivas123 en http://www.experts-exchange.com/Software/Server_Software/Application_Servers/Java/Q_23023116.html. – vladr

+0

iText no es compatible directamente con RTF, primero se requiere convertir el documento a HTML \ XHTML, lo que básicamente significa que otra capa que probablemente no se muestre exactamente como el RTF original, que acaba de probar, no estaba satisfecho, sigue buscando . – Stavm

0

PrimoPDF. Actúa como una impresora virtual, por lo que solo imprime y saca un PDF.

3

Cuatro años más tarde a la fiesta aquí, pero yo uso Ted en mi aplicación web.Genero RTF programáticamente, luego uso el script rtf2pdf.sh incluido en el paquete para generar el PDF. Intenté con OOo y unoconv anteriormente, pero Ted demostró ser más rápido y más confiable en mi aplicación.

+1

Veo que Ted no tiene ninguna opción para ocultar el texto oculto del archivo RTF, en el archivo PDF convertido. –

1

LibreOffice puede convertir documentos RTF a PDF a través de la línea de comandos.

Here son las instrucciones para instalarlo en CentOS.

Y este es un ejemplo para iniciar la conversión de código PHP:

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

Agradable, muchas gracias – dns

+0

De todas las opciones, marqué esta opción hace 2 meses, y probablemente sea la peor para mí, malinterpretó por completo la estructura RTF y no puedo decir que la recomiende para hacer incluso pequeñas y documentos simples. y mucho menos uso comercial. no caiga en la opción 'línea de comando', obtendrá mejores resultados con Open Office aunque requiere más código de su parte. – Stavm