vez reconoce puedo pudo producido imprimirse imprimir impresora guardar error documento como archivos aparece c# winforms pdf reporting-services

c# - reconoce - ReportViewer.PrintDialog() arroja una excepción al imprimir en Adobe PDF



pdf no reconoce impresora (3)

AFAIK el control ReportViewer solo representa cada página como una imagen de mapa de bits. Entonces, al imprimir en PDF, si la resolución es alta, podría ser un gran mapa de bits. ¡Tal vez AdobePDF tiene problemas con grandes mapas de bits, Adobe tiene tantos otros errores! Intenta reducir la resolución como una prueba?

Tengo una aplicación que utiliza la API de ReportServer para obtener los mapas de bits de la página y los divide en partes para que los maneje un procesador de impresión personalizado.

Estoy trabajando en una aplicación de WinForms que usa el control ReportViewer para mostrar algunos informes de Reporting Services. En estas pantallas, permitimos que el usuario imprima el informe llamando al método PrintDialog() en el ReportViewer de la siguiente manera:

_reportViewer.PrintDialog();

Esto funciona bien en la mayoría de los casos, abre el cuadro de diálogo estándar de impresión de Windows, el usuario elige en qué impresora desea imprimir y lo imprime. Sin embargo, cuando el usuario elige imprimir en PDF utilizando "Adobe PDF", arroja una Win32Exception: The specified datatype is invalid . El diálogo de archivo para elegir dónde guardar el pdf ni siquiera aparece.

Esto solo ocurre con la impresora Adobe PDF. Instalé NitroPDF y usé su impresora PDF y funciona sin problemas.

¿Alguien tiene una idea sobre qué podría estar causando esto?

Editar:

Aquí está el rastro de la pila:

at System.Drawing.Printing.StandardPrintController.OnStartPrint(PrintDocument document, PrintEventArgs e) at System.Windows.Forms.PrintControllerWithStatusDialog.OnStartPrint(PrintDocument document, PrintEventArgs e) at System.Drawing.Printing.PrintController.Print(PrintDocument document) at System.Drawing.Printing.PrintDocument.Print() at Microsoft.Reporting.WinForms.ReportViewer.PrintDialog(PrinterSettings printerSettings) at Microsoft.Reporting.WinForms.ReportViewer.PrintDialog()


Esto realmente no soluciona el problema, pero lo resuelve a los ojos de los usuarios.

Atrape el error generado por la Impresora PDF e invoque la funcionalidad Exportar a PDF integrada en Reporting Services. No se produce un error en Winforms incluso cuando se imprime en la impresora PDF. Desde la perspectiva del usuario, "imprimieron en pdf" como de costumbre y la experiencia es idéntica. Es un trabajo que funciona. :-)


Podría ser que el contenido del informe esté creando este problema. Quiero decir que el informe puede contener ciertos caracteres que la impresora Adobe PDF no puede reconocer.

¿Puedes tratar de imprimir un informe muy simple / básico / en blanco y ver si eso funciona?