ReportViewer.PrintDialog () вызывает исключение при печати в Adobe PDF - PullRequest
4 голосов
/ 23 ноября 2010

Я работаю над приложением WinForms, которое использует элемент управления ReportViewer для отображения нескольких отчетов служб Reporting Services.На этих экранах мы позволяем пользователю распечатать отчет, вызвав метод PrintDialog() в ReportViewer, например:

_reportViewer.PrintDialog();

В большинстве случаев это работает нормально, он вызывает стандартный диалог печати окон,пользователь выбирает, на каком принтере он хочет печатать, и он печатает.Однако, когда пользователь выбирает печать в PDF с использованием «Adobe PDF», он выбрасывает Win32Exception: The specified datatype is invalid.Диалоговое окно выбора файла для сохранения PDF даже не появляется.

Это происходит только с принтером Adobe PDF.Я установил NitroPDF и использовал их принтер PDF, и он работает без проблем.

Кто-нибудь знает, что может быть причиной этого?

Редактировать:

Вот трассировка стека:

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()

Ответы [ 3 ]

4 голосов
/ 30 ноября 2010

Это на самом деле не решает проблему, но решает ее в глазах пользователей.

Перехватывает ошибку, выданную принтером PDF, затем вызывает функцию экспорта в PDF, встроенную в службы Reporting Services.Это не ошибка в Winforms, даже когда печать на принтере PDF делает.С точки зрения пользователя они «печатаются в pdf», как обычно, и опыт идентичен.Это работа вокруг, которая работает.: -)

1 голос
/ 27 ноября 2010

Может быть, содержание отчета создает эту проблему. Я имею в виду, что отчет может содержать определенные символы, которые принтер Adobe PDF не может распознать.

Можете ли вы попытаться напечатать очень простой / простой / пустой отчет и посмотреть, работает ли он.

1 голос
/ 26 ноября 2010

AFAIK элемент управления ReportViewer просто отображает каждую страницу в виде растрового изображения. Поэтому при печати в PDF, если разрешение высокое, это может быть огромный растровый рисунок. Возможно, у AdobePDF есть проблемы с большими растровыми изображениями, у Adobe так много других ошибок! Попробуйте уменьшить разрешение в качестве теста?

У меня есть приложение, которое использует API ReportServer для получения растровых изображений страниц и разбивает их на части, которые будут обрабатываться пользовательским процессором печати

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...