¿Cómo producir documentos (docx o pdf) desde SQL Server?

Sé que esto es un poco subjetivo, pero estoy investigando la siguiente situación:

Necesito producir una cantidad de documentos automáticamente a partir de datos en una base de datos de SQL Server. Habrá una aplicación MVC3 en la base de datos para permitir la entrada de datos, etc. y (probablemente) un botón "Ir" para producir los documentos.

Debe haber alguna lógica comercial sobre cómo se crean, nombran y almacenan estos documentos (por ejemplo, los documentos "principales" obtienen un nombre y van en una carpeta, los documentos "secundarios" obtienen un nombre calculado y van en una subcarpeta.

Los documentos pueden ser PDF o Doc(x) (o incluso ambos), siempre que la salida pueda estar en EN-US y AR-QA (texto RTL)

Sé que hay una serie de opciones de SSRS, Crystal Reports, VSTO, PDF "manual" en código, combinación de correspondencia de Word, etc... y ya tenemos una herramienta de HTML a PDF si sirve de algo.

¿Alguien tiene algún consejo del mundo real sobre cómo hacer esto y cuál sería el enfoque "mejor" (más pragmático)? Cuantos menos "extras" necesite instalar y configurar en un servidor, mejor: cuanto más rápido sea el desarrollo, mejor (¡como siempre!)


Hallazgos hasta ahora:

Combinación de correo de Word (o VSTO) Simplemente no ofrece la simplicidad, el control y la flexibilidad que necesito, es una pena. Sería bueno definir un dotx y poder pasarle los datos de forma individual para generar el docx. La única forma en que pude lograr esto (y puede que me equivoque aquí) fue recorrer los controles/marcadores por nombre y reemplazar los valores... desordenado.

OpenXml Crear documentos basados ​​en plantillas dotx, incluso usando OpenXML no es tan simple como (en mi humilde opinión) debería ser. Debe reemplazar cada control de contenido por su nombre, por lo que el mantenimiento no es la tarea más simple.

SSRS A primera vista, esta es una buena solución (aunque necesita SQL Enterprise), sin embargo, se vuelve más complicado si desea producir dinámicamente las carpetas y los documentos. Sin embargo, la suscripción basada en datos se acerca mucho a lo que quiero.

Convertidor Winnovative de HTML a PDF* Esta es la herramienta que ya tenemos (aunque una versión .Net 2.0). Esto me permite generar las páginas HTML y convertirlas a PDF. Una buena opción para mí, ya que puedo ejecutar esto en un sitio web MVC3 y pasar los parámetros a los controladores para generar los PDF. Esto me da un control mucho más detallado sobre la carpeta y las estructuras de nombres: el problema con este método es simplemente generar las páginas de la manera correcta. Una ventaja es que automáticamente me da una "vista previa"... ¡básicamente solo la página HTML!

preguntado el 03 de mayo de 12 a las 07:05

¿Es realmente un Suscripción basada en datos en SSRS (que requiere la necesidad de Enterprise Edition) o simplemente un informe bajo demanda? I pensar puede usar el cliente RS incorporado para renderizar directamente a PDF o Word o simplemente presentar el informe al usuario en su página web y permitirle dirigir las acciones de guardado. -

Para un solo informe, esto sería excelente, sin embargo, el resultado final (en este caso) es una jerarquía de múltiples niveles de informes. Básicamente, necesitamos producir informes específicos para todos nuestros clientes, sus accionistas, miembros de la junta y subsidiarias, incluidos SUS accionistas, miembros de la junta, etc. para un organismo regulador. Hay reglas sobre a qué nivel se informa cada uno, etc. -

Es bueno que edites la publicación original como referencia. ¿Por casualidad comprobó las capacidades de tecnologías como Silverlight y WPF? -

No, no fue más allá de la lista anterior... básicamente se fue con lo que ya teníamos, pero se actualizó a la versión .Net 4.0. -

3 Respuestas

Office OpenXML es una forma agradable y sencilla de generar archivos de oficina. XSLT puede ser una herramienta poderosa para formatear su contenido. Esta tecnología no le permitirá crear archivos PDF.

El desarrollo rápido sin utilizar componentes de terceros será difícil. Pero si considera usar un servidor de informes, asegúrese de consultar BIRT o Jasper.

Para generar pdf, he estado usando el obsoleto Report.net. Tiene muchos puertos a diferentes idiomas y todavía es suficiente para hacer archivos PDF simples. Report.net en sourceforge

Respondido el 10 de diciembre de 15 a las 13:12

No creo que SQL Server en sí mismo pueda producir archivos pdf. Lo que puede hacer es, como mencionó, instalar una instancia de SSRS y crear un informe que produzca la información que necesita. Luego puede crear una suscripción para entregar su informe donde quiera, cuando quiera.

Aquí hay un ejemplo de una suscripción simple: enter image description here

contestado el 03 de mayo de 12 a las 09:05

¿SSRS también puede crear una estructura de carpetas/nombre de archivo dinámicos? - azulchippy

sí, con una suscripción normal, puede crear nombres de archivo dinámicos (consulte las opciones de sobrescritura) en la pantalla de impresión. Si necesita algo más elaborado, como carpetas dinámicas, necesita una suscripción basada en datos: Diego

Opte por SSRS solo si está de acuerdo con configurarlo en un servidor y existe una necesidad definitiva de programar informes e informes complejos.

Si tiene un código para la generación manual de PDF/docx, le sugiero que continúe con él. Esperemos que la complejidad de su código no sea un problema para usted.

He usado ambos en escenarios separados. Usamos clases de Excel y objetos de .NET para un informe mínimo desde una aplicación web.

Pero optó por un elaborado esquema de informes para un sistema que requería que se generaran miles de informes de manera programada y se entregaran a un grupo seleccionado de personas.

contestado el 03 de mayo de 12 a las 11:05

Gracias: no se requiere programación, es más un caso de poder reemplazar stubs con datos en una "plantilla" de algún tipo y luego guardar en ubicaciones/nombres específicos. - azulchippy

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.