Программно конвертировать (сохранять) файлы (например, docx, xlsx, txt) в XPS, отправляя их на принтер «Microsoft XPS Document Writer» - PullRequest
1 голос
/ 29 сентября 2011

Используя C # 3.5, я пытаюсь программно создавать файлы XPS, отправляя их на принтер «Microsoft XPS Document Writer». Я могу установить очередь печати, но не могу добавить работу в очередь печати с помощью PrintQueue.AddJob (), так как она ожидает файл XPS. Я также пытался установить PrintSystemInfo JobStream в байтовый массив, но безрезультатно.

По сути, я хочу имитировать то, что пользователь делает вручную при печати в «Microsoft XPS Document Writer»: 1. Выберите «Microsoft XPS Document Writer» из списка принтеров. 2. Укажите новое имя файла XPS. 3. Распечатайте его (который сохранит как файл .xps)

Я думаю, что с пространствами имен System.Printing и System.Windows.Xps будет простой способ сделать это. Я провел много времени, исследуя это, и видел, как другие люди пытались выполнить ту же задачу, но никто не смог найти элегантного решения.

Любое понимание будет высоко ценится.

Спасибо.

1 Ответ

1 голос
/ 15 июня 2012

То, что вы должны искать, это как попросить приложения, которые знают, как читать эти файлы, чтобы распечатать их. Я имею в виду, что Excel может отображать xslt, поэтому вы должны попросить Excel распечатать его на устройстве записи XPS (возможно, через COM).

Пространство имен System.Windows.Xps может помочь, если вы знаете, как читать и визуализировать документ - тогда вы делаете соответствующие вызовы методов XpsDocuments, аналогичных этому https://stackoverflow.com/a/352551/332528,, отрисовывая документ в xps а затем распечатать его.

...