Разное

Printdocument c: PrintDocument Класс (System.Drawing.Printing) | Microsoft Learn

Печать документа в C#|Aspose.Words для .NET

Содержание

[ Скрывать ]

В этой статье описывается, как распечатать текстовый документ из приложения службы ASP.NET или Windows с помощью Aspose.Words и XpsPrint API. В нем также демонстрируются методы печати документа с помощью диалоговых окон «Настройки», «Предварительный просмотр» и «Ход печати», а также объясняется, как сократить время первого вызова для печати документа.

Печать документа на сервере с помощью XpsPrint API

Этот раздел предназначен для пользователей, которые хотят отправить документ XPS в неуправляемый XpsPrint API из приложения .NET с помощью Aspose.Words.

Ограничения печати документа в приложениях службы ASP.NET или Windows

При разработке приложения .NET, которое выводит некоторые печатные данные, обычно можно использовать классы, предоставленные в пространстве имен System.Drawing.Printing или Windows Presentation Базовые (WPF) классы. Однако если приложение является приложением службы ASP.NET или Windows, возможности печати ограничены, поскольку Microsoft не рекомендует использовать этот подход. Классы печати .NET Framework не поддерживаются приложением-службой. Сюда входят страницы ASP, которые обычно запускаются в контексте службы сервера.

Классы в пространстве имен System.Drawing.Printing не поддерживаются для использования в службе Windows или приложении или службе ASP.NET, и попытка их использования может привести к снижению производительности службы, исключениям во время выполнения и другим проблемам. . Использование WPF для создания служб Windows также не поддерживается. Поскольку WPF — это технология представления, службе Windows требуются соответствующие разрешения для выполнения визуальных операций, связанных с взаимодействием с пользователем. Если служба Windows не имеет таких разрешений, могут быть неожиданные результаты.

Объект Aspose.Words Document предоставляет семейство методов Print для печати документов. Эти методы используют классы печати .NET, определенные в пространстве имен System.Drawing.Printing . Многие клиенты Aspose.Words успешно используют их для печати в своих серверных приложениях. Тем не менее, в этой статье демонстрируется альтернативный метод печати, соответствующий рекомендациям Microsoft.

Методы печати документа на сервере

По мнению Microsoft, правильный способ печати документов — использование неуправляемого XpsPrint API. Этот API доступен в Windows 7, Windows Server 2008 R2 и Windows Vista, если установлено обновление платформы для Windows Vista.

Поскольку Aspose.Words может легко преобразовать любой документ в XPS, вам нужно только написать код, который передает документ XPS в XpsPrint API. Единственная проблема заключается в том, что XpsPrint API неуправляемый и требует некоторого знания технологии Platform Invoke.

Для печати документа Aspose.Words предоставляет класс XpsPrintHelper , содержащий простой метод Print, в котором необходимо указать следующие параметры (подробнее см. в статье «Печать документа через XPS API»):

  • Документ, который вы хотите распечатать.
  • Имя принтера.
  • Имя задания (необязательно).
  • Логическое значение, указывающее, должна ли программа ожидать завершения задания на печать. Поэтому система либо проверит, успешно ли распечатан документ, либо вернется сразу после отправки задания на печать. В последнем случае невозможно определить, успешно ли выполнено задание на печать.

При возникновении проблем с отправкой или печатью документа метод выдает исключение.

В приведенном ниже примере кода показано, как распечатать документ с помощью класса XpsPrintHelper  :

При запуске проекта он печатает образец документа на указанном принтере и открывает окно консоли для отображения результатов печати. Когда задание печати завершится или возникнут ошибки, система отобразит сообщение об успешном выполнении или текст сгенерированного исключения.

Вы также можете установить некоторые параметры печати с помощью класса PageSetup. Например, в Microsoft Word лотки принтера определяются для каждого раздела и зависят от конкретного принтера. Поэтому вы можете программно изменить эти значения для каждого раздела с помощью свойств FirstPageTray и OtherPagesTray.

В некоторых случаях вам может понадобиться использовать этот пример без Aspose.Words. Например, если у вас уже есть документ XPS и вы просто хотите распечатать его из приложения ASP.NET или службы Windows. Затем вы можете просто удалить метод Print.

Существует две перегрузки

XpsPrintHelper . Метод печати . Первая перегрузка принимает объект Document и сохраняет его в MemoryStream в формате XPS. Вторая перегрузка принимает объект Stream. Поток должен содержать документ в формате XPS.

Вы можете скачать примеры перегрузки методов с Aspose.Words GitHub.

Вы можете загрузить образец файла этого примера с Aspose.Words GitHub.

Печать документа с диалоговыми окнами параметров и предварительного просмотра

При работе с документами часто требуется распечатать их на выбранном принтере. Полезно использовать диалоговое окно предварительного просмотра, чтобы визуально проверить, как будет выглядеть напечатанный документ, и выбрать соответствующие параметры печати.

Aspose.Words не имеет встроенных диалогов или форм, но реализует класс AsposeWordsPrintDocument на основе класса .NET PrintDocument . Экземпляр этого класса можно передать в форму PrintPreviewDialog

для предварительного просмотра и печати документа. Кроме того, класс PrintPreviewDialog определяет вывод для передачи на принтер.

В следующем примере показано, как использовать эти классы для печати документа из Aspose.Words с помощью диалоговых окон Предварительный просмотр и Настройки:

Свойство AllowSomePages позволяет выбрать диапазон страниц для печати, если значение этого свойства равно True. По умолчанию для печати выбираются все страницы в диапазоне.

Чтобы оптимизировать внешний вид параметров диалога предварительного просмотра перед печатью, укажите свойства класса  PrintPreviewDialog  .

Печать нескольких страниц на одном листе

Всегда полезно иметь больше гибкости при печати документов. Используя .NET и Aspose.Words, вы можете легко настроить операцию печати для реализации собственной логики, определив способ отображения документа на печатной странице.

Как и в предыдущем разделе, Aspose.Words реализует класс MultipagePrintDocument , основанный на классе .NET PrintDocument . Это означает, что существующую инфраструктуру печати .NET можно использовать таким образом, чтобы диалоговые окна печати и предварительного просмотра позволяли визуализировать документ перед печатью. MultipagePrintDocument Класс обеспечивает возможность печати нескольких страниц на одном листе бумаги.

Вы можете скачать пример использования класса MultipagePrintDocument с Aspose.Words GitHub.

Результат этого примера кода показан ниже:

Скрытие диалогового окна «Ход печати» при печати документа

Диалоговое окно «Ход печати» не отображается при печати документа методом «Печать». Однако это диалоговое окно появляется во время печати другим методом печати. В этом случае, чтобы диалоговое окно «Печать» не появлялось, в этом методе следует указать допустимые настройки принтера и стандартный контроллер печати, как показано в примере ниже:

Вы можете скачать образец файла этого примера с Aspose.Words GitHub.

Как сократить время первого вызова для печати документа

Aspose.Words считывает и кэширует некоторые поля PrinterSettings  для сокращения времени печати. Этого можно добиться, вызвав метод CachePrinterSettings. Этот метод вызывается перед началом печати, если он не был выполнен ранее. Обратите внимание, что общее время печати с вызовом этого метода и без него практически одинаково. Цель использования этого метода — сократить время первого вызова метода Print. В следующем примере кода показано, как использовать этот метод:

См. также

  • Обновление платформы для Windows Vista

Поток информации от документа печати к распечатке

Использование

На рисунке ниже показано, как документ форматируется для печати.

В то время как другие системы буферизации имеют только запросы на печать, которые направляются непосредственно на принтер, система буферизации SAP различает запросы буферизации и запросы вывода. Таким образом, процесс печати в системе спулинга SAP состоит из двух этапов:

  1. Когда вы выпустили документ для печати; то есть вы выбрали вариант печати, Сначала создается запрос спула. Система различает следующие данные печати во время создания запроса буфера и сохраняет данные в разных местах:

    • Данные запроса буфера

      Это административная информация для запроса, такая как создано, создано и устройство вывода. Эти данные хранятся в буферной базе данных SAP.

    • Данные катушки

      Это данные, которые должны быть напечатаны; то есть содержание документа для печати. Эти данные хранятся в специальном хранилище данных для временных последовательных данных ( ТемСе).

  2. Только после отправки документа на устройство вывода административные данные и данные для печати объединяются, а формируется запрос на вывод.

    Для этого система преобразует независимые от устройства данные печати в запросе буфера на соответствующий язык принтера, понятный устройству вывода (например, POSTSCRIPT, PCL-5).

Различая запросы буфера и запросы вывода, можно временно сохранять данные печати без необходимости вывода. Вы также можете сделать следующее:

На рисунке ниже показано, как вы можете выводить данные:

  • Ситуация а: Буфер и запросы на вывод создаются одновременно (немедленная печать).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *