¿Tiene usted alguna .Net libre de código administrado para la conversión de DOCX a PDF?

StackOverflow https://stackoverflow.com/questions/1356718

  •  20-09-2019
  •  | 
  •  

Pregunta

En mi proyecto web, utilizo DOCX tipo de archivo para contener plantilla de informe. Necesito convertir docx tipo de archivo a PDF. ¿Tiene cualquier código administrado de .NET para hacer eso?

Conozco varias maneras para resolver esta cuestión. Pero no se gestiona de código y libre como los siguientes elementos.

  • Palabra 12.0 Object Library Para guardar mediante programación una palabra 2007 documento como un documento en formato PDF o un documento XPS. Pero se requiere la instalación de Office 2007 en el servidor.

  • Imprimir mediante el uso de algunos de impresora PDF libre como PDFCreator . Pero necesito algún programa para DOCX abierta en el servidor como Office 2007. Es muy mala idea.

  • Convertir por el programa convertidor libre. Pero resultado no es perfecto.

  • XF Rendering servidor . Es muy buena idea, pero no es libre.

  • Crea todo el contenido del documento en PDF API como iTextSharp . Pero tengo que esforzarse mucho para crear buen documento.

  • O crear documento de plantilla con otro formato de archivo que se pueden exportar al formato de archivo PDF y DOCX. Por otra parte, los usuarios finales deben editar fácilmente el archivo. Si usted sabe, por favor dígame.

Gracias,

¿Fue útil?

Solución

No tengo código para convertir docx a PDF, pero parece que su requisito para DOCX no es firme. Su última bala dice:

  

O crear documento de plantilla con otra   formato de archivo que se pueden exportar a DOCX   y formato de archivo PDF. Además,   los usuarios finales deben modificar fácilmente este   archivo. Si usted sabe, por favor dígame.

He leído esto en el sentido que desea ser capaz de crear un documento de plantilla, llenarlo con los datos y convertirlo a PDF, sin embargo, que la plantilla pueda ser mantenido, ¿verdad?

Solución: XSL-FO

XSL-FO es un estándar W3C como HTML y puede ser transformada por un número de código abierto y los productos comerciales en PDF, WordML, XPS, PS, PCL, SVG, TIFF, etc. He utilizado este para entregar cientos de miles de documentos al mes, tanto en línea como fuera de línea y los archivos PDF (cosas como la impresión de cheques a granel).

Para empezar, aquí está el página de W3C para XML-FO . Hay un montón de buena información allí, incluyendo una lista de software (tanto de código abierto y commecial) por el lado izquierdo. Yo personalmente he utilizado dos productos comerciales llamados IBEX PDF Creator y XEP por RenderX . Ambos son excelentes productos, y hay una manejado C # aplicación 100% para llegar a PDF llamado FO.NET hasta en CodePlex. No he probado esto, pero debe satisfacer su criterio de "libre".

Hay un número de maneras en que puede corregir la plantilla de documentos que se crean en XSL-FO. Normalmente, esta plantilla es XSLT que se aplica a los datos XML, pero esto no es un requisito. He construido éstos a mano, pero es un poco de una curva de aprendizaje. Puede comenzar con un documento en XSL-FO y acabar los tramos de la misma con el código, al igual que usted podría HTML. La buena noticia es que hay son un número de < a href = "http://www.renderx.com/tools/datastyler.html" rel = "noreferrer"> editores XSL-FO que hay. La mala noticia es que ninguno que conozco son libres, pero varios de ellos son baratos y se puede encontrar algo que se cumple el criterio libre con un poco de google. Sin embargo, una opción es que se puede convertir de Word utilizando una hoja de estilo ( comercial y libre ).

Otros consejos

La instalación de Office 2007 y el uso de la biblioteca de objetos de Word 12 es sin duda la opción que yo iría a por (y lo han hecho en algunos de mis propios proyectos).

Si no desea instalar Word en un servidor Web de producción, por qué no tenerlo en un servidor secundario. Usted puede obtener este segundo servidor para comunicarse con el primero (mediante un servicio web o algo así) -. Podría solicitar el siguiente documento de Word que necesita exportar, hacer la conversión y luego devolver los datos PDF

Quiero saber si quieres un ejemplo de C # de la automatización de Word que hace esta conversión (es muy trivial).

Adrian


Aquí está mi código, publicado por Jason. Esto funciona con Word 2007. Es necesario descargar e instalar el exportador PDF desde el sitio web de la Oficina:

using Microsoft.Office.Interop.Word;

...

object _read_only = false;
object _visible = true;
object _false = false;
object _true = true;
object _dynamic = 2;
object  _missing = System.Reflection.Missing.Value;

object _htmlFormat = 8;        
object _pdfFormat = 17;
object _xpsFormat = 18;

object fileName = "C:\\Test.docx";

ApplicationClass ac = new ApplicationClass();
//ac.Visible = true; // Uncomment to see Word as it opens and converts the document
//ac.Activate();

Document d = ac.Documents.Open(ref fileName, ref _missing, ref _true, ref _read_only, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _visible, ref _missing, ref _missing, ref _missing, ref _missing);

object newFileName = ((string)fileName).Substring(0, ((string)fileName).LastIndexOf(".")) + ".pdf";

d.SaveAs(ref newFileName, ref _pdfFormat, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing);

d.Close(ref _false, ref _missing, ref _missing);
ac.Quit(ref _false, ref _missing, ref _missing);

ac = null;

Así, Soul_Master, lo que está diciendo es que usted no desea utilizar interoperabilidad (aunque no se dice qué, que me interesaría saber), que no quiere pagar por un comercial exportador, y desea un resultado perfecto?

No puedo evitar que, me temo. Interop le dará un resultado perfecto, cada vez, y ya tiene el software. Si no va a utilizar eso, usted va a tener que hacer un sacrificio -. O bien costo o la calidad

¿Tiene Open Office tiene una API? que habría por lo menos una opción libre?

Crea el PDF con un herramienta de informe como ActiveReports / Crystal Reports (mucho más fácil que usar iTextSharp)

he resuelto mis problemas con DOCX a la conversión de PDF con un componente gratuito llamado Spire.Doc gratuito . Puede ver más sobre ella en este sitio . Es muy fácil su uso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top