2009-02-26 37 views
10

Duplicar posible:
Convert HTML to PDF in .NETExportación de HTML a PDF (C#)

En nuestras aplicaciones que hacen los documentos HTML como los informes y las exportaciones. Pero ahora nuestro cliente quiere un botón que guarde ese documento en su PC. El problema es que el documento incluye imágenes. Se puede crear un documento de texto con el siguiente código:

private void WriteWordDoc(string docName) 
{ 
    Response.Buffer = true; 
    Response.ContentType = "application/msword"; 
    Response.AddHeader("content-disposition", String.Format("attachment;filename={0}.doc", docName.Replace(" ", "_"))); 
    Response.Charset = "utf-8"; 
} 

Pero el problema es que las imágenes son sólo vincula a un tanto, no incrustado en el documento de Word.

Por lo tanto, estoy buscando una alternativa PDF parece ser una buena alternativa, ¿alguien sabe un buen escritor de pdf para C#? Uno que tiene algunas buenas referencias y ha sido probado correctamente?

+2

Tenga en cuenta que lo que hace es ** no ** crear un documento de Word. Simplemente está haciendo un uso indebido de una 'característica' de Word para poder abrir un documento HTML incluso cuando está enmascarado como un archivo '.doc'. –

Respuesta

5

Optaría por crear un archivo PDF en el servidor. Hay muchos productos que lo hacen, pero debe buscar el que mejor funcione en su caso teniendo en cuenta lo siguiente:

  • Recursos de la computadora necesarios para crear el PDF. Si se trata de un documento complejo, puede llevar demasiado tiempo o ralentizar la respuesta a otros usuarios.
  • Número de usuarios simultáneos que requerirán esta misma función
  • Costo (hay soluciones gratuitas, así como productos comerciales de gran peso).

No confío en el formato de Word para eso, ya que PDF le dará más garantía de que será legible en el futuro.

Además, la opción de insertar enlaces duros a las imágenes no me parece una buena idea. ¿Qué pasa si el usuario quiere abrir el documento y el servidor no es accesible?

2

Tendría que dar el enlace absoluto de las imágenes a alguna ubicación disponible en Internet.

Una vez que el documento se ha cargado en Word, guardando el documento 'HTML' como uno de MSWord, debe incluir las imágenes (¿o tal vez una opción?).

+0

Otra alternativa es usar el material de VSTO, pero nunca lo he usado antes. – leppie

0

Tengo had the same problem pero no he podido resolverlo, ya que nos decidimos a exportar un documento "sin imágenes", ya que no tenía ninguna imagen en primer lugar.

Sin embargo, al buscar el problema me encontré con this article, acerca de cómo exportar un documento usando XSLT. Todavía no he encontrado el tiempo para trabajar en él, pero tal vez puede probarlo

4

Tiene un problema más grande ... guardar el archivo generado es prerrogativa del navegador. La forma en que el navegador trata con cualquier flujo de archivos en particular, incluso cuando configura el tipo de contenido, depende completamente del navegador. Su mejor opción es usar algo como ABCpdf para convertir el HTML/imágenes en un PDF. He tenido muy buena suerte con su software, y tienen un soporte decente. Por supuesto, esta es una herramienta de terceros que deberá instalar. Sin hacer eso, su próxima mejor opción es probablemente crear un archivo comprimido de HTML con imágenes y otros archivos (CSS, javascript?) ... pero eso va a tomar un poco de lógica de back-end.

Algunos navegadores tienen esta función incorporada. Puede pedirles a sus usuarios que lo usen. :)

+0

Es el único con el que he tenido alguna experiencia. En el pasado buscaba alternativas, pero ABCpdf era prácticamente el único juego de la ciudad. Es un poco una herramienta de nicho. – Bryan

+0

Utilizo doPDF que funciona al emular una impresora. Ningún formato perdido de esa manera. – Kyte

0

MS tiene un nuevo formato de descripción de página "XPS" que se puede generar simplemente a partir de WPF el modelo de programación, ya sea en el servidor o en un cliente. Hay una aplicación XPS Reader, como el lector de PDF, que permite a los usuarios ver e imprimir documentos XPS. Hay una API simple para producir un documento XPS.

0

Pruebe PDF Duo .Net componente que convierte HTML a PDF a/desde cadena | archivo | url | corriente. Es una biblioteca pequeña pero muy eficiente que puede usar en su aplicación ASP.NET.

Find ASP.NET C# example on its page.

2

ExpertPDF hace un trabajo decente de la conversión de HTML a PDF (incluyendo imágenes). Internamente, utiliza una copia alojada de IE para representar el HTML antes de convertirlo, lo que significa que este componente no funcionará con Mono en Linux, y significa que las peculiaridades de IE son las peculiaridades de su PDF. Dicho esto, hace un buen trabajo al hacer diseños moderadamente complejos, y puede controlar la paginación con CSS page-break-before y tal.

+1

La versión 9.0 y posterior de ExpertPDF (lanzado en diciembre de 2013) ahora usa el motor WebKit, por lo que IE ya no es un factor. – Theophilus

3

de código abierto ensamblaje de generación de flujo pdf .net: http://sourceforge.net/projects/itextsharp/

una vez que el cuelgue de ella, que nunca uso cualquier tercera parte # $%^# o obstruyen su servidor haciendo IO y de ocupar espacio para un archivo temporal nunca más.

+0

No lo intenté todavía, pero me gusta su opinión. –

2

Me gusta DocRaptor.com para crear archivos PDF. Es una aplicación web que funciona en cualquier idioma y utiliza Prince XML, por lo que los resultados son de alta calidad.