Печать множества копий документа Word из WPF / C # .NET 4

#wpf #printing #.net-4.0 #ms-word

#wpf #печать #.net-4.0 #ms-word

Вопрос:

Я создаю приложение WPF на C # и .NET 4, и мне нужно распечатать две копии одного и того же файла. У меня есть следующий код, который выполняет работу, но это не так красиво, поскольку Word открывается дважды.

 Process myProcess = new Process();
        myProcess.StartInfo.FileName = invoiceFileAbsoluteStoreagePath;
        myProcess.StartInfo.Verb = "Print";
        myProcess.StartInfo.CreateNoWindow = true;
        //Print out two copies - ugly! - no better way apparently
        myProcess.Start();
        myProcess.WaitForExit();
        //Let's do it again... there need to be a better way :(
        myProcess.Start();
        myProcess.WaitForExit();
  

Не могу ли я каким-либо образом отправить аргумент в Word, сообщающий, что мне нужны X копий из этого документа?

Ответ №1:

Обычно я выполняю печать с помощью документов потока WPF. Оттуда вы можете просто создать страницу WPF, вызвать на ней команду печати, автоматически заполнить количество копий и выполнить задание на печать. Если у вас всего несколько документов, вы можете воссоздать их в XAML и даже ввести в них данные. Запуск занимает немного времени, но после реализации он выполняется довольно быстро. Нет вступительного слова. Просто откройте XML-файл как XamlDocument, введите данные через ViewModel и распечатайте.

Хотя это не относится конкретно к документам потока, это поможет вам в этом.

Комментарии:

1. Спасибо, но, честно говоря, печать одного файла Word (.docx) кажется большой работой. У меня есть файл «template» .docx, который я заполняю и сохраняю на жестком диске. После этого мне нужно распечатать файл в два раза больше — вот и все. Ваше предложение, похоже, делает гораздо более динамичный материал.

2. Я реализовал это для проекта, над которым работал некоторое время назад. У нас было 3 документа (начинались как один). Мне потребовалось около 2 часов, чтобы создать шаблоны документов в WPF, еще час, чтобы создать виртуальные машины и распечатать код. После синхронизации запуска Word и процесса печати, который мы использовали (около 6 секунд) 40 раз в день при 260 рабочих днях в году, у меня получилось использовать 17 часов. В новом процессе задание на печать выполнялось на принтере почти мгновенно (менее 1/8 секунды), что позволило сэкономить большую часть из этих 17 часов. Я сделал его довольно модульным, чтобы позже можно было добавить дополнительные документы, сохранив больше…