Print workflow service windows 10

Print workflow service windows 10

Provides support for Print Workflow applications. If you turn off this service, you may not be able to print successfully.

This service exists in Windows 10 only.

Startup Type

Windows 10 version Home Pro Education Enterprise
1507 not exists not exists not exists not exists
1511 not exists not exists not exists not exists
1607 not exists not exists not exists not exists
1703 not exists not exists not exists not exists
1709 Manual Manual Manual Manual
1803 Manual Manual Manual Manual
1809 Manual Manual Manual Manual
1903 Manual Manual Manual Manual
1909 Manual Manual Manual Manual
2004 Manual Manual Manual Manual
20H2 Manual Manual Manual Manual

Default Properties

Display name: PrintWorkflow
Service name: PrintWorkflowUserSvc
Type: user share process template
Path: %WinDir%\system32\svchost.exe -k PrintWorkflow
File: %WinDir%\System32\PrintWorkflowService.dll
Error control: normal
Object: LocalSystem

Default Behavior

If PrintWorkflow fails to start, the error is logged. Windows 10 startup proceeds, but a message box is displayed informing you that the PrintWorkflowUserSvc service has failed to start.

Dependencies

PrintWorkflow is unable to start, if the Remote Procedure Call (RPC) service is stopped or disabled.

Restore Default Startup Type for PrintWorkflow

Automated Restore

1. Select your Windows 10 edition and release, and then click on the Download button below.

2. Save the RestorePrintWorkflowWindows10.bat file to any folder on your hard drive.

3. Right-click the downloaded batch file and select Run as administrator.

Создание пользовательского рабочего процесса печати Customize the print workflow

Обзор Overview

Разработчики могут настраивать рабочий процесс печати, используя приложение рабочего процесса печати. Developers can customize the printing workflow experience through the use of a print workflow app. Приложения рабочего процесса печати — это приложения UWP, расширяющие функциональность приложений устройств Microsoft Store (WSDA), поэтому целесообразно ознакомиться с WSDA, прежде чем продолжать. Print workflow apps are UWP apps that expand on the functionality of Microsoft Store devices apps (WSDAs), so it will be helpful to have some familiarity with WSDAs before going further.

Как и в случае с WSDA, когда пользователь исходного приложения решает напечатать что-либо и осуществляет навигацию по диалоговому окну печати, система проверяет, связано ли приложение рабочего процесса с принтером. Just as in the case of WSDAs, when the user of a source application elects to print something and navigates through the print dialog, the system checks whether a workflow app is associated with that printer. Если да, запускается приложение рабочего процесса печати (в основном, как фоновая задача, см. подробности ниже). If it is, the print workflow app launches (primarily as a background task; more on this below). Приложение рабочего процесса может изменить и заявку на печать (XML-документ, настраивающий параметры принтера для текущей задачи печати), и фактическое содержимое XPS для печати. A workflow app is able to alter both the print ticket (the XML document that configures the printer device settings for the current print task) and the actual XPS content to be printed. Приложение может предоставить эту функциональность пользователю, запустив пользовательский интерфейс посередине процесса. It can optionally expose this functionality to the user by launching a UI midway through the process. Выполнив свою работу, приложение передает содержимое для печати и заявку на печать драйверу. After doing its work, it passes the print content and print ticket on to the driver.

Поскольку приложение содержит фоновые компоненты и компоненты переднего плана и поскольку его функциональность связана с другими приложениями, приложение рабочего процесса печати может быть более сложным в реализации, чем другие категории приложений UWP. Because it involves background and foreground components, and because it is functionally coupled with other app(s), a print workflow app can be more complicated to implement than other categories of UWP apps. Рекомендуется изучить пример приложения рабочего процесса, читая это руководство, чтобы лучше понять, как реализовывать разные функции. It is recommended that you inspect the Workflow app sample while reading this guide to better understand how the different features can be implemented. Некоторые функции, такие как различные проверки ошибок и управление пользовательским интерфейсом, отсутствуют в этом руководстве для простоты. Some features, such as various error checks and UI management, are absent from this guide for the sake of simplicity.

Читайте также:  Лабораторная работа операционная система windows файловые менеджеры

Начало работы Getting started

Приложение рабочего процесса должно указать свою точку входа системе печати, чтобы его можно было запустить в нужное время. The workflow app must indicate its entry point to the print system so that it can be launched at the appropriate time. Для этого в элемент Application/Extensions файла package.appxmanifest проекта UWP вставляется следующая декларация. This is done by inserting the following declaration in the Application/Extensions element of the UWP project’s package.appxmanifest file.

Существует много сценариев, в которых настройка печати не требует пользовательского ввода. There are many scenarios in which the print customization does not require user input. По этой причине приложения рабочего процесса печати выполняются в виде фоновых задач по умолчанию. For this reason, Print workflow apps run as background tasks by default.

Если приложение рабочего процесса связано с исходным приложением, которое запустило задание печати (см. следующий раздел для получения инструкций), система печати изучает файлы манифеста, чтобы узнать точку входа фоновой задачи. If a workflow app is associated with the source application that started the print job (see later section for instructions on this), the print system examines its manifest files for a background task entry point.

Выполнение фоновой работы в заявке печати Do background work on the print ticket

В первую очередь система печати активирует фоновую задачу в приложении рабочего процесса (в данном случае это класс WfBackgroundTask в пространстве имен WFBackgroundTasks ). The first thing the print system does with the workflow app is activate its background task (In this case, the WfBackgroundTask class in the WFBackgroundTasks namespace). В методе Run фоновой задачи необходимо привести сведения о триггере задачи в качестве экземпляра PrintWorkflowTriggerDetails. In the background task’s Run method, you should cast the task’s trigger details as a PrintWorkflowTriggerDetails instance. Это предоставляет специальные функции для фоновой задачи рабочего процесса печати. This will provide the special functionality for a print workflow background task. Она предоставляет свойство PrintWorkflowSession, которое является экземпляром PrintWorkFlowBackgroundSession. It exposes the PrintWorkflowSession property, which is an instance of PrintWorkFlowBackgroundSession. Классы сеанса рабочего процесса печати (фоновые и переднего плана) контролируют последовательные шаги приложения рабочего процесса печати. Print workflow session classes — both the background and foreground varieties — will control the sequential steps of the print workflow app.

Затем необходимо зарегистрировать методы обработки для двух событий, вызываемых классом сеанса. Then register handler methods for the two events that this session class will raise. Эти методы определяются позже. You will define these methods later on.

При вызове метода Start диспетчер сеанса сначала вызывает событие SetupRequested. When the Start method is called, the session manager will raise the SetupRequested event first. Это событие предоставляет общие сведения о задаче печати, а также заявку на печать. This event exposes general information about the print task, as well as the print ticket. На этом этапе заявку на печать можно отредактировать в фоновом режиме. At this stage, the print ticket can be edited in the background.

Очень важно, что приложение определяет, запускать ли компонент переднего плана, в обработке SetupRequested. Importantly, it is in the handling of the SetupRequested that the app will determine whether to launch a foreground component. Это может зависеть от настройки, которая была ранее сохранена в локальном хранилище, или от события, которое произошло при редактировании заявки на печать; либо это может быть статическая настройка определенного приложения. This could depend on a setting that was previously saved to local storage, or an event that occurred during the editing of the print ticket, or it may be a static setting of your particular app.

Выполнение работы переднего плана в задании печати (дополнительно) Do foreground work on the print job (optional)

Если метод SetRequiresUI был вызван, система печати изучит файл манифеста, чтобы определить точку входа в приложение переднего плана. If the SetRequiresUI method was called, then the print system will examine the manifest file for the entry point to the foreground application. Элемент Application/Extensions файла package.appxmanifest должен содержать следующие строки. The Application/Extensions element of your package.appxmanifest file must have the following lines. Замените значение EntryPoint именем приложения переднего плана. Replace the value of EntryPoint with name of the foreground app.

Затем система печати вызывает метод OnActivated для точки входа заданного приложения. Next, the print system calls the OnActivated method for the given app entry point. В методе OnActivated файла App.xaml.cs приложение рабочего процесса должно проверить тип активации, чтобы убедиться, что это активация рабочего процесса. In the OnActivated method of its App.xaml.cs file, the workflow app should check the activation kind to verify that it is a workflow activation. Если так, то приложение рабочего процесса может привести аргументы активации к объекту PrintWorkflowUIActivatedEventArgs, который предоставляет объект PrintWorkflowForegroundSession в качестве свойства. If so, the workflow app can cast the activation arguments to a PrintWorkflowUIActivatedEventArgs object, which exposes a PrintWorkflowForegroundSession object as a property. Этот объект, как и его фоновый аналог в предыдущем разделе, содержит события, которые вызываются системой печати, и им можно назначить обработчики. This object, like its background counterpart in the previous section, contains events that are raised by the print system, and you can assign handlers to these. В этом случае функция обработки событий будет реализована в отдельном классе с названием WorkflowPage . In this case, the event-handling functionality will be implemented in a separate class called WorkflowPage .

Читайте также:  Как изменить заставку загрузки для windows

Сначала выполните следующее в файле App.xaml.cs: First, in the App.xaml.cs file:

После прикрепления обработчиков событий к пользовательскому интерфейсу и завершению метода OnActivated система печати запустит событие SetupRequested, которое должно быть обработано в пользовательском интерфейсе. Once the UI has attached event handlers and the OnActivated method has exited, the print system will fire the SetupRequested event for the UI to handle. Это событие предоставляет те же данные, что и событие настройки фоновой задачи, включая сведения о задании печати и документ заявки на печать, но без возможности запросить запуск дополнительного пользовательского интерфейса. This event provides the same data that the background task setup event provided, including the print job info and print ticket document, but without the ability to request the launch of additional UI. В файле WorkflowPage.xaml.cs: In the WorkflowPage.xaml.cs file:

Затем система печати создаст событие XpsDataAvailable для пользовательского интерфейса. Next, the print system will raise the XpsDataAvailable event for the UI. В обработчике для этого события приложение рабочего процесса может осуществлять доступ ко всем данным, доступным событию настройки, и дополнительно считывать данные XPS напрямую (в виде потока необработанных байтов или объектной модели). In the handler for this event, the workflow app can access all of the data available to the setup event and can additionally read the XPS data directly, either as a stream of raw bytes or as an object model. Благодаря доступу к данным XPS в пользовательском интерфейсе доступен предварительный просмотр файлов и пользователю предоставляется информация об операциях, которые приложение рабочего процесса будет выполнять с данными. Access to the XPS data allows the UI to provide print preview services and to provide additional information to the user about the operations that the workflow app will execute on the data.

В составе этого обработчика событий приложение рабочего процесса должно получить отсроченный объект, если он продолжит взаимодействовать с пользователем. As part of this event handler, the workflow app must acquire a deferral object if it will continue to interact with the user. Без отсрочки система печати будет считать задачу пользовательского интерфейса завершенной, когда обработчик события XpsDataAvailable завершит работу или вызовет асинхронный метод. Without a deferral, the print system will consider the UI task complete when the XpsDataAvailable event handler exits or when it calls an async method. Как только приложение получило всю необходимую информацию от взаимодействия пользователя с пользовательским интерфейсом, Оно должно завершить отсрочку, чтобы система печати могла продолжить работу. When the app has gathered all required information from the user’s interaction with the UI, it should complete the deferral so that the print system can then advance.

Кроме того, экземпляр PrintWorkflowSubmittedOperation, предоставляемый аргументами события, позволяет отменить задание печати или указать, что задание выполнено успешно, но выходное задание печати не требуется. Additionally, the PrintWorkflowSubmittedOperation instance exposed by the event args provides the option to cancel the print job or to indicate that the job is successful but that no output print job will be needed. Для этого нужно вызвать метод Complete со значением PrintWorkflowSubmittedStatus. This is done by calling the Complete method with a PrintWorkflowSubmittedStatus value.

Если приложение рабочего процесса отменит задание печати, настоятельно рекомендуется, чтобы всплывающее уведомление проинформировало пользователя о причинах отмены задания. If the workflow app cancels the print job, it is highly recommended that it provide a toast notification indicating why the job was cancelled.

Выполнение заключительной фоновой работы с содержимым для печати Do final background work on the print content

После того как пользовательский интерфейс завершил отсрочку в событии PrintTaskXpsDataAvailable (или если этот шаг в пользовательском интерфейсе был обойден), система печати запустит для фоновой задачи событие Submitted. Once the UI has completed the deferral in the PrintTaskXpsDataAvailable event (or if the UI step was bypassed), the print system will fire the Submitted event for the background task. В обработчике для этого события приложение рабочего процесса может получить доступ ко всем данным, предоставляемым событием XpsDataAvailable. In the handler for this event, the workflow app can get access to all of the same data provided by the XpsDataAvailable event. Однако в отличие от предыдущих событий, Submitted также предоставляет доступ на запись к содержимому заключительного задания на печать через экземпляр PrintWorkflowTarget. However, unlike any of the previous events, Submitted also provides write access to the final print job content through a PrintWorkflowTarget instance.

Объект, который используется для буферизации данных для окончательной печати, зависит от того, осуществляется ли доступ к исходным данным в качестве потока необработанных байтов или объектной модели XPS. The object that is used to spool the data for final printing depends on whether the source data is accessed as a raw byte stream or as the XPS object model. Когда приложение рабочего процесса осуществляет доступ к исходным данным через поток байтов, предоставляется выходной поток байтов для записи данных финального задания. When the workflow app accesses the source data through a byte stream, an output byte stream is provided to write the final job data to. Когда приложение рабочего процесса осуществляет доступ к исходным данным через объектную модель, предоставляется средство записи документов для записи объектов в выходное задание. When the workflow app accesses the source data through the object model, a document writer is provided to write objects to the output job. В любом случае приложение рабочего потока должно считать все исходные данные, изменить любые необходимые данные и записать их в выходной целевой объект. In either case, the workflow app should read all of the source data, modify any data required, and write the modified data to the output target.

Читайте также:  Linux перезагрузка модуля ядра

Как только фоновая задача завершит запись данных, она должна вызвать метод Complete в соответствующем объекте PrintWorkflowSubmittedOperation. When the background task finishes writing the data, it should call Complete on the corresponding PrintWorkflowSubmittedOperation object. После того как приложение рабочего процесса завершит этот шаг, а обработчик события Submitted закончит свою работу, сеанс рабочего процесса будет закрыт, а пользователь может отслеживать состояние заключительного задания печати в стандартных диалоговых окнах печати. Once the workflow app completes this step and the Submitted event handler exits, the workflow session is closed and the user can monitor the status of the final print job through the standard print dialogs.

Заключительные действия Final steps

Регистрация приложения рабочего процесса печати на принтере Register the print workflow app to the printer

Приложение рабочего процесса связано с принтером с использованием того же типа отправки файлов метаданных, что и WSDA. Your workflow app is associated with a printer using the same type of metadata file submission as for WSDAs. Одно приложение UWP может одновременно функционировать и как приложение рабочего процесса, и как WSDA, предоставляющее функциональность параметров задания печати. In fact, a single UWP application can act as both a workflow app and a WSDA that provides print task settings functionality. Выполните шаги в WSDA для создания связи метаданных. Follow the corresponding WSDA steps for creating the metadata association.

Разница в том, что WSDA автоматически активируются для пользователя (приложение будет всегда запускаться, когда пользователь выполняет печать на соответствующем устройстве), а приложения рабочего процесса — нет. The difference is that while WSDAs are automatically activated for the user (the app will always launch when that user prints on the associated device), workflow apps are not. У них есть отдельная политика, которую необходимо задать. They have a separate policy that must be set.

Настройка политики приложения рабочего процесса Set the workflow app’s policy

Политика приложения рабочего процесса задается командами PowerShell на устройстве, которое будет выполнять приложение рабочего процесса. The workflow app policy is set by Powershell commands on the device that is to run the workflow app. Команды Set-Printer, Add-Printer (существующий порт) и Add-Printer (новый порт WSD) будут изменены, чтобы можно было задать политики рабочего процесса. The Set-Printer, Add-Printer (existing port) and Add-Printer (new WSD port) commands will be modified to allow Workflow policies to be set.

  • Disabled : приложения рабочего процесса не будут активированы. Disabled : Workflow apps will not be activated.
  • Uninitialized : приложения рабочего процесса будут активированы, если DCA рабочих процессов установлена в системе. Uninitialized : Workflow apps will be activated if the Workflow DCA is installed in the system. Если приложение не установлено, печать продолжится. If the app is not installed, printing will still proceed.
  • Enabled : контракт рабочего процесса будет активирован, если DCA рабочих процессов установлена в системе. Enabled : Workflow contract will be activated if the Workflow DCA is installed in the system. Если приложение не установлено, произойдет сбой печати. If the app is not installed, printing will fail.

Следующая команда делает приложение рабочего процесса обязательным на указанном принтере. The following command makes the workflow app required on the specified printer.

Локальный пользователь может выполнить эту политику на локальном принтере, или (в корпоративных системах) администратор принтера может выполнить эту политику на сервере печати. A local user can run this policy on a local printer, or, for enterprise implementation, the printer administrator can run this policy on the Print Server. Эта политика затем будет синхронизирована со всеми клиентскими подключениями. The policy will then be synchronized to all client connections. Администратор принтера может использовать эту политику всякий раз при добавлении нового принтера. The printer admin can use this policy whenever a new printer is added.

Оцените статью