Андрей Смирнов
Время чтения: ~17 мин.
Просмотров: 0

Инструкция, как скачать драйвер для принтера

Введение

XML Paper Specification (XPS) — это формат документа, который можно использовать для просмотра, сохранения, подписи и защиты содержимого документа. XPS-документ похож на электронный лист бумаги. Изменить содержание листа после печати нельзя, также нельзя изменить содержимое XPS-документа после сохранения его в формате XPS. В операционной системе Windows 7 можно создавать XPS-документ в любой программе, в которой есть возможность печати, но просматривать, подписывать и устанавливать разрешения для XPS-документов можно только при помощи средства просмотра XPS. XPS-документ — это любой файл, сохраненный в формате XML Paper Specification (XPS).

Если два раза нажать левой кнопкой мыши на XPS-документе, то он автоматически открывается в средстве просмотра XPS. Приложение очень простое и при его использовании не должно возникать никаких проблем. В этой статье я расскажу об основных операциях, которые можно проводить со средством просмотра XPS-документов в операционной системе Windows 7. В средстве просмотра XPS есть несколько опций для просмотра и управления XPS-документами, это:

  • Сохранение на компьютере копии XPS-документа.
  • Использование в документе поиска слова или фразы.
  • Изменение масштаба для повышения удобочитаемости текста и картинок.
  • Цифровая подпись XPS-документа.
  • Управление доступом к документу и длительностью этого доступа с помощью применения разрешений документа.

Constructors

Initializes a new instance of the XpsDocument class with access to a specified XML Paper Specification (XPS) Package and default interleaving, resource, and compression options.

Initializes a new instance of the XpsDocument class that is contained in a specified Package with specified default interleaving, resource, and compression options.

Initializes a new instance of the XpsDocument class that is contained in a specified Package with the specified default interleaving, resource, and compression options.

Initializes a new instance of the XpsDocument class that is contained in a specified Package file with default interleaving, resource, and compression options.

Initializes a new instance of the XpsDocument class that is contained in a specified Package file with default interleaving, resource, and compression options.

Печать непосредственно на принтер через XPS

Как уже известно, поддержка печати в WPF построена на пути печати XPS. При использовании класса PrintDialog признаки этой низкоуровневой реальности могут быть и не видны. С другой стороны, если применяется XpsDocumentWriter, то не заметить их невозможно.

До сих пор вся печать запускалась через класс PrintDialog. Поступать так не обязательно. В действительности PrintDialog делегирует реальную работу XpsDocumentWriter. Трюк состоит в создании XpsDocumentWriter, который упаковывает PrintQueue вместо FileStream. Код записи печатного вывода идентичен — в нем используются методы Write() и WriteAsync().

Ниже приведен фрагмент кода, который отображает диалоговое окно Print, получает выбранный принтер и применяет его для создания XpsDocumentWriter, запускающего задание печати:

Интересно, что в этом примере все равно используется класс PrintDialog. Однако это делается просто для отображения стандартного диалогового окна Print, в котором пользователь может выбрать принтер. Реальная печать осуществляется через XpsDocumentWriter.

Чем открыть файл XPS

В Windows: Nuance PDF Converter Professional, Dolphin Futures XPS Viewer, Pagemark XpsViewer, Pagemark XpsConvert, Mozilla Firefox с плагином Pagemark XpsPlugin, XPS Annotator, Microsoft Word, NiXPS View, Danet Studio, Split XPS Merge, STDU Viewer, SumatraPDF, Xara Designer Pro, XPS Annotator, MuPDF, Microsoft Internet Explorer 6 и выше (если установлен .NET Framework 3.0)В Mac OS: Nuance PDF Converter, Apple Safari с плагином Pagemark XpsPlugin, Mozilla Firefox с плагином Pagemark XpsPlugin, Microsoft Word, NiXPS ViewВ Linux: Mozilla Firefox с плагином Pagemark XpsPlugin, KDE Okular, EvinceКроссплатформенное ПО: NiXPS Edit, Pagemark XPS Viewer, Harlequin RIPВ Apple iOS (iPhone, iPad, iPod): MuPDF

Properties

Gets the core PackageProperties of the XPS document.

Gets an IXpsFixedDocumentSequenceReader for reading the document.

Gets a value that indicates whether the package is readable.

Gets a value that indicates whether the package can be digitally signed.

Gets a value that indicates whether the package is writable.

Gets a collection of XML Paper Specification (XPS) signatures that are associated with the package.

Gets or sets the XML Paper Specification (XPS) thumbnail image that is associated with the document.

Gets or sets the uniform resource identifier (URI) of the part.

(Inherited from XpsPartBase)

Асинхронная печать

Класс XpsDocumentWriter упрощает асинхронную печать. Фактически предыдущий пример можно преобразовать для использования асинхронной печати, просто заменив вызов метода Write() вызовом WriteAsync().

В Windows все задания печати выполняются асинхронно. Тем не менее, процесс отправки задания на печать происходит синхронно, если применяется метод Write(), и асинхронно — если WriteAsync(). Во многих случаях время на отправку задания на печать является несущественным, и это средство не понадобится. Другое дело, если требуется построить (и разбить на страницы) содержимое, которое должно печататься асинхронно — это зачастую наиболее затратная по времени операция, и если нужна такая возможность, то понадобится писать код, который запускает логику печати в фоновом потоке. Для относительного упрощения работы можно воспользоваться подходом с классом BackgroundWorker.

Сигнатура метода WriteAsync() соответствует сигнатуре метода Write(). Другими словами, WriteAsync() принимает объект разбивки на страницы, визуальный элемент или один из нескольких других типов объектов.

Вдобавок метод WriteAsync() имеет перегрузки, принимающие дополнительный второй параметр с информацией о состоянии. Информация о состоянии может быть представлена любым объектом, который будет использоваться для идентификации задания печати. Этот объект предоставлен посредством объекта WritingCompletedEventArgs при возникновении события WritingCompleted. Это позволяет запускать сразу несколько заданий печати, обрабатывать событие WritingCompleted для каждого из них в одном и том же обработчике и определять, какое именно задание было запущено при каждом возникновении события.

Выполнение асинхронного задания печати можно прервать, вызвав метод CancelAsync().

Класс XpsDocumentWriter также включает небольшой набор событий, которые позволяют реагировать на отправку задания печати, в том числе WritingProgressChanged, WritingCompleted и WritingCancelled. Имейте в виду, что событие WritingCompleted происходит тогда, когда задание печати записывается в очередь печати, но это не значит, что принтер немедленно начинает его печатать.

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

В WPF доступна вся необходимая поддержка программного создания документов XPS. Создание документа XPS концептуально похоже на печать некоторого содержимого: после построения документа XPS выбран фиксированный размер страницы и компоновка «заморожена». Так зачем же нужен дополнительный шаг? На то есть две причины:

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

  • Асинхронная печать. Класс XpsDocumentWriter включает как метод Write() для синхронной печати, так и метод WriteAsync(), который позволяет отправлять содержимое на принтер асинхронно. Для длительных и сложных операций печати асинхронный вариант предпочтителен. Он позволяет создавать более отзывчивые приложения.

Базовый прием создания документа XPS предусматривает создание объекта XpsDocumentWriter с использованием статического метода XpsDocument.CreateXpsDocumentWriter(), например:

XpsDocumentWriter — усеченный класс, и его функциональность вращается вокруг методов Write() и WriteAsync(), которые записывают содержимое в документ XPS.

Оба эти метода многократно перегружены, позволяя писать разные типы содержимого, включая другой документ XPS, страницу, извлеченную из документа XPS, визуальный элемент (который позволяет записывать любой элемент) и DocumentPaginator. Вновь созданный документ XPS затем отображается в DocumentViewer, который служит для предварительного просмотра печати.

Events

WritingCancelled

Bir Write veya WriteAsync işlemi iptal edildiğinde gerçekleşir.Occurs when a Write or WriteAsync operation is canceled.

WritingCompleted

Bir yazma işlemi tamamlandığında gerçekleşir.Occurs when a write operation finishes.

WritingPrintTicketRequired

Bir Write veya WriteAsync yönteminin bir belgeye veya yazdırma kuyruğuna PrintTicket eklemesi hemen önce gerçekleşir.Occurs just before a Write or WriteAsync method adds a PrintTicket to a document or print queue.

WritingProgressChanged

XpsDocumentWriter ilerleme durumunu güncelleştirdiğinde oluşur.Occurs when the XpsDocumentWriter updates its progress.

Supported OpenXPS Scenarios

The Windows print path has been developed to ensure that the submitted XPS format matches a supported format of the targeted print driver, and will convert formats as needed. Windows also provides APIs to query the print driver, so that the application can provide compatible elements and avoid any additional conversion within the print system.

A print driver can use its manifest to indicate whether it supports Microsoft XPS, Open XPS, or both formats. Either Microsoft XPS or OpenXPS can be presented to the filters in the print filter pipeline, using the existing stream and object model (OM) interfaces – no new interfaces are required by drivers to support OpenXPS. The format that is presented to the filters, depends on the format that is supported by the driver, or the format that is provided by the application.

The Microsoft XPS Document Writer (MXDW) has been updated to allow MXDW to output either Microsoft XPS or OpenXPS from any Windows desktop application. Likewise, the Microsoft XPS Viewer and the Reader app in Windows 8 can open both XPS formats. If needed, users can print from the XPS Viewer to MXDW in order to convert formats.

Remarks

An XpsDocument contains a FixedDocumentSequence that comprises one or more FixedDocument elements.

The XpsDocument constructor is passed a reference to a Package for writing, storing, and reading the content elements of the document.

A new empty XPS Package is created by using the Package constructor.

An existing XPS Package is opened by using the Package.Open method.

A FixedDocumentSequence root is added to an empty XPS Package by calling the AddFixedDocumentSequence method.

PrintTicket elements with printer information and control can also be associated with the FixedDocumentSequence, or on individual FixedDocument and FixedPage elements that are stored in the XpsDocument.

For more information about XPS see the XML Paper Specification (XPS) available for download at https://go.microsoft.com/fwlink/?LinkID=65761.

Описание расширения XPS

Популярность:

Раздел: Документы

Разработчик: Microsoft

Расширение XPS связано с форматом XML Paper Specification (XPS), также известный как открытый графический формат фиксированной разметки на базе XML. XPS формат был разработан Microsoft и Ecma International для электронного представления электронных документов, которые могут быть легко созданы, переданы и распечатаны. Это фиксированный формат макета, как и формат документа PDF. Формат сертифицирован ISO и опубликован как стандарт ECMA-388. В функционале .XPS используется векторная непоследовательная разметка, поддерживает многопоточную работу и представления, взаимодействует с .NET Framework, поддерживает шифрование, цифровые сертификаты. Пока безопасен, т.к. не имеет поддержки скриптов.

Файл XPS – это ZIP архив, который содержит данные документа, такие как страницы документа файлов (файлы Fpage), документы файлов настроек (fdoc файлы), файлы фрагментов документа (фрагментов файлов) и т.д. Если вы хотите просматривать содержимое файлов XPS переименуйте расширение .XPS на .ZIP и откройте архив ZIP любым архиватором, таким как WinZip, WinRAR и т.п.

Чтобы создать .XPS файлы Вы можете использовать Microsoft Document Writer, которая доступна в стандартной комплектации операционной системы Microsoft Windows, начиная с Vista, а также загрузить с сайта Microsoft. Это небольшой драйвер принтера, который позволяет создать документ .XPS в любом приложении, которое способно печатать документы.

Microsoft XPS Viewer доступен для просмотра XPS документов в Microsoft Windows Vista/7/8, ее так же можно загрузить с сайта Microsoft. Но можно скачать Пакет Microsoft XPS EP и работать с файлами .XPS на Windows XP.

Файлы XPS так же можно просматривать в Microsoft Internet Explorer 6 и выше, если установлен .NET Framework 3.0.

ПРИМЕЧАНИЕ: В Windows 8 по умолчанию используется файл с расширением .OXPS. OXPS и XPS – разные форматы и программы, открывающие XPS, скорее всего не поддерживают формат OXPS, поэтому рекоммендуем использовать для конвертации утилиту Microsoft XpsConverter.

MIME тип: application/vnd.ms-xpsdocumentHEX код: 50 4B 03 04ASCII код: PK

Impact on Driver Developers

The following are the basic steps for enabling OpenXPS in a v4 print driver:

  • Driver manifest: Add “OpenXPS” to the Driver Render section.
  • Driver manifest: Add “oxps” to the FileSave section, if applicable.
  • Filter pipeline: Update print filters to handle OpenXPS elements.

For a given stream, and with the appropriate object interfaces, a client can use the OpenXPS format to transfer data to the filters in the print filter pipeline. To transfer a data stream, the client uses the IID_IPrintReadStream and IID_IPrintWriteStream interfaces. To transfer data to an OM component, the client uses the IID_IXpsDocumentProvider and IID_IXpsDocumentConsumer interfaces. Drivers that declare support for OpenXPS will have to ensure that the print filters provided can correctly handle the OpenXPS format when this format is received from the pipeline manager.

Driver Manifest: DriverRender section. During driver installation, the setup process checks the DriverRender section of the manifest to see if the XpsFormat entry includes OpenXPS. The XpsFormat entry can include both XPS (for Microsoft XPS) and OpenXPS, to indicate dual support. The order in which the two formats are listed in the XpsFormat entry determines the preferred format for the driver.

Here are some examples of how to update the DriverRender section.

Indicating support for OpenXPS only:

Indicating support for MSXPS only:

Indicating support for both formats, with a preference for OpenXPS:

Indicating support for both formats, with a preference for MSXPS:

The driver developer determines the preferred format for their V4 print driver, and this decision is based on the functionality that the driver was designed to provide. For example, a print driver could be developed to provide JPEG XR support for high-fidelity images.

The print system makes various decisions based on the DriverRender information in the manifest. Here are some examples of those decisions:

  • GDI-based print jobs sent to v4 drivers

    The Microsoft XPS Document Converter (MXDC) takes GDI print job input and converts the job to an XPS spool file. The format of that spool file will match the preferred XPS format denoted in the DriverRender section of the manifest.

  • XPS Print API format conversion

    The XPS Print API will query supported XPS formats for the target driver. If the driver supports both formats, the XPS Print API will pass the XPS Print Job to the spooler AS SUBMITTED by the application. No conversion will be performed.

    If the target driver only supports one or the other format, then the job will be converted to the correct format before spooling.

    If no XpsFormat is provided in the manifest, the behavior will default to MSXPS only. OpenXPS input will be converted to MSXPS. This behavior provides the strongest backward compatibility for drivers.

  • XPS files sent directly to spooler

    XPS files sent directly to the spooler are, by default, MSXPS. Submitting OpenXPS direct to the spooler is not supported. However, .NET prior to 4.5+ serialized its own MSXPS and submitted the job directly to the spooler. This behavior was implemented prior to the introduction of the XPS Print API (xpsprint.dll).

    To provide backward compatibility for these .NET applications, the print filter pipeline manager will check the spool file to determine if it was received direct-to-spooler. If so, it will be assumed to be MSXPS. The print filter pipeline manager will query the driver’s XPS formats at that point. If the driver supports MSXPS, no conversion will be performed. If the driver only supports OpenXPS, the print filter pipeline manager will perform a conversion of the file. Conversion at this point in the job is performance expensive; however, it ensures that legacy .NET apps will be able to print to new v4 OpenXPS drivers.

Driver Manifest: FileSave section. The FileSave section of the v4 print driver manifest provides extensions for the File Save dialog used by the PORTPROMPT: port. (PORTPROMPT: should be used in lieu of FILE: in Windows 8.1, because PORTPROMPT: will allow users to access all file locations to which they have rights, even when the application is running in low-rights mode.) The entries in the FileSave section are associated with the entries in the DriverRender section by index.

Example:

This will ensure that when the user sends a print job to this driver, and the port is set to PORTPROMPT:, the File Save dialog will display XPS and OpenXPS as file type options in the dialog, and apply .xps or .oxps respectively, as the file extension.

For additional information about other options for the File Save section of the manifest, see V4 Driver Manifest.

Methods

Adds a root FixedDocumentSequence to the package and returns a writer.

Adds a thumbnail image to the package.

Closes the XPS document Package.

Creates an XpsDocumentWriter for writing an XpsDocument.

Releases the unmanaged resources that are used by the XpsDocument and optionally, releases the managed resources.

Determines whether the specified object is equal to the current object.

(Inherited from Object)

Returns the fixed-document sequence at the root of the package.

Serves as the default hash function.

(Inherited from Object)

Gets the Type of the current instance.

(Inherited from Object)

Creates a shallow copy of the current Object.

(Inherited from Object)

Deletes a signature from the package.

Signs a collection of package parts with a specified X.509 certificate.

Signs a collection of package parts by using a specified X.509 certificate.

Signs a collection of package parts with a specified X.509 certificate.

Returns a string that represents the current object.

(Inherited from Object)

Classes

VisualsToXpsDocument

Предоставляет методы для записи объектов Visual в документы XPS или в очередь печати в пакетном режиме.Provides methods for writing Visual objects to XML Paper Specification (XPS) documents or to a print queue in batch mode.

XpsDocumentWriter

Предоставляет методы для записи в документ XPS или очередь печати.Provides methods to write to an XPS document or print queue.

XpsException

Служит в качестве базового класса для исключений, которые вызываются упаковкой XML Paper Specification (XPS) и интерфейсами API сериализации.Serves as the base class for exceptions that are thrown by the XML Paper Specification (XPS) packaging and serialization APIs.

XpsPackagingException

Исключение, которое выбрасывается при чтении, записи, регистрации или каком-либо другом доступе к XpsDocument.The exception that is thrown when reading, writing to, registering, or accessing in some other way an XpsDocument.

XpsSerializationException

Исключение, которое создается при ошибках сериализации документа XPS.The exception that is thrown for XML Paper Specification (XPS) document serialization errors.

XpsWriterException

Исключение, которое возникает, если вызывается метод объекта XpsDocumentWriter или VisualsToXpsDocument, несовместимый с текущим состоянием объекта.The exception that is thrown when a method of either an XpsDocumentWriter or a VisualsToXpsDocument object is called that is incompatible with the current state of the object.

Remarks

XpsDocumentWriter oluşturucuya sahip değil.XpsDocumentWriter has no constructor. XpsDocumentWriteroluşturmak için XpsDocument sınıfının statik CreateXpsDocumentWriter yöntemini kullanın veya PrintQueue sınıfının statik CreateXpsDocumentWriter yöntemlerinden birini kullanın.To create an XpsDocumentWriter, use the static CreateXpsDocumentWriter method of the XpsDocument class or use one of the static CreateXpsDocumentWriter methods of the PrintQueue class. XpsDocumentWriter oluşturan belge veya sıra, yazdığı hedef olur.The document or the queue that creates the XpsDocumentWriter becomes the target to which it writes.

Unsupported OpenXPS Scenarios

Some legacy functionality is either not supported, or provides a downgraded experience when used with OpenXPS.

Unsupported: Sending OpenXPS files directly to the spooler (bypassing the XPS Print API) is an unsupported scenario. Doing this, will produce the following functionality issues:

  • XPS spool files sent directly to the spooler will be treated as MSXPS and handled accordingly.
  • The results of sending an OpenXPS file directly to the spooler are undefined and will likely cause the print job to fail.

Note  There are no plans to provide support for this scenario.

Not recommended: Sending an OpenXPS stream from an application directly to the XPS Print API is not a recommended technique. For example, do not send an OpenXPS stream directly to the StartXPSPrintJob method. If you do this, the resulting conversion from one flavor of XPS to another as a stream can be very expensive for performance.

Instead, you should use IPrintDocumentPackageTarget to submit the print job as an XPS OM to avoid performance degradation.

Not recommended: Sending an XPS spool file directly to the spooler. If you do this, the print system will not find the required metadata added by the print path APIs, assume that the format is MSXPS, and will attempt to convert it to OpenXPS. If the spool file that was sent directly to the spooler was an OpenXPS-formatted file, the attempt by the print filter pipeline to ‘convert’ it to OpenXPS will have undefined results. If the file that was sent to the spooler was an MSXPS-formatted file and the driver is an OpenXPS-only driver, then the conversion by the print filter pipeline to OpenXPS will be successful. But this late stage conversion will result in a significant loss in print system performance.

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации