Ввиду не зависящих от меня обстоятельств, я заменяю все наши Crystal Reports домашними XML-отчетами, которые прекрасно работают. Для большинства отчетов, открывающих окно просмотра Crystal Reports, следующий код красиво открывает их в IE, преобразуя их в HTML с помощью таблицы стилей XSLT.
ProcessStartInfo psi = new ProcessStartInfo(reportFilename)
{
UseShellExecute = true
};
using (Process p = new Process {StartInfo = psi})
{
p.Start();
}
Проблема в том, что некоторые отчеты просто печатаются непосредственно на принтере, никогда не показывая отчет пользователю, что прекрасно работает в CR. Я не могу понять, как это сделать, используя код выше.
Я бы предпочел не запускать процесс IE, если это возможно, но я гарантирую, что они работают под управлением Windows, так что это не сложное требование. Кроме того, будет ли печать непосредственно таким способом преобразовывать XML в HTML через XSL и печатать его, или просто печатать фактический текст XML?
РЕДАКТИРОВАТЬ : я уже пробовал добавить:
Verb = "Print"
для объекта ProcessStartInfo, но это приводит к исключению, которое выдает:
"No application is associated with the specified file for this operation"
ВНОВЬ РЕДАКТИРОВАТЬ : Указание IE в качестве исполняемого файла для запуска снова загрузило XML, но не предлагает действия «печать». Добавление «window.print ()» в блок JavaScript работает, но требует ручного нажатия кнопки печати после разрешения запуска сценария, поскольку IE блокирует его.
РЕДАКТИРОВАТЬ ТРЕТЬЕ : Мой начальник сказал мне не беспокоиться об этом, что они могут печатать из IE. Я все еще хочу понять это. Я пробовал командную строку "print.exe", но это только печатает сырой XML на принтер. Пробовал XslCompiledTransform с PrintDocument, но это тоже не то, что я ищу.