Что такое виртуальный принтер и как им пользоваться


Что такое виртуальный принтер

Виртуальный принтер – это словосочетание вы наверняка слышали много раз. Казалось бы, здесь все понятно: принтер – значит печатает, а виртуальный – значит он не реальный, или не материальный, кому как нравится.

В реальности все обстоит не совсем так. На самом деле виртуальный принтер далеко не всегда может печатать, и даже более того – чаще он вообще не может печатать. Но, как и стоило предполагать, посмотреть на этот принтер довольно сложно. Единственное, на что можно взглянуть – это на компьютерный код программы или ее интерфейс.

В классическом понимании, виртуальный принтер – это обычная программа. Она позволяет просмотреть, как будет выглядеть документ после печати, и сохранить результат.  

Кроме того, виртуальные принтеры могут использоваться:

 - для преобразования одного типа документа в другие, например в PDF, Djvu, PostScript и так далее;
 - для отправки документов на факсимильные устройства;
 - для преобразования документов в изображения, обычно это такие форматы, как JPEG и TIFF.

Существуют как платные, так и бесплатные виртуальные принтеры. Платность программы, к сожалению, не всегда является гарантией высокого качества и удобства. Поэтому  стоит выбирать, исходя из своих потребностей, а не покупать сразу самую дорогую. К тому же, некоторые из них уже наверняка у вас есть. Например, такая программа, как Microsoft Office Document Image Writer всходит в состав Microsoft Office.

Все вышеперечисленные виртуальные принтеры печатать могут только виртуально. Но есть и другие, для которых реальная печать совсем не проблема – речь идет о виртуальных принтерах Google.

При помощи виртуального принтера Google вы сможете без проблем распечатать любые документы из любой точки мира. Расстояния не играют никакой роли, главным критерием здесь служит наличие Интернета. Для печати на таком принтере вы может использовать планшет, мобильный телефон, домашний компьютер или любое другое устройство, использующее Интернет.

Принтеры Google – это удобно, оперативно и современно. Как и вся продукция этой компании, виртуальные принтеры максимально удобны и функциональны. У вас не возникнет никаких проблем с настройками и обслуживанием виртуального принтера с поддержкой облачной печати. Даже более того, при использовании этого софта у вас появится возможность «приучить» к облачной печати самый обычный принтер.

Использование облачной печати очень удобно для ведения бизнеса. Но кроме бизнесменов, удобство виртуального принтера оценят все, кто дорожит своим временем и не собирается тратить его на ожидание чего-либо.

Что такое виртуальный принтер? | Small Business

Нефизический принтер на компьютере вашего офиса или в компьютерной сети, виртуальный принтер - это приложение, которое обычно создает PDF-файл или нередактируемый файл для совместного использования с коллегами или клиентами через Интернет. Виртуальный принтер не является частью физического принтера и автоматически загружает собственный драйвер печати. Принтеры устанавливаются как физические принтеры и отображаются в диалоговом окне принтера приложения вместе с другими принтерами.

Структура

Виртуальные принтеры не печатают на бумаге; принтеры создают цифровой файл, который сохраняется на жестком диске вашего компьютера. Файл, как и печатный документ, содержит точный макет документа, созданного вами или вашим партнером с помощью текстового редактора, электронной таблицы или другого приложения. Вы также можете распечатать файл виртуального принтера на физическом принтере. Виртуальные принтеры доступны для систем Windows, Mac и Linux, а также для других платформ.

Факс-приложения

Факс-приложения устанавливают и используют виртуальные принтеры для создания цифровых документов для отправки на физический факс или факсимильный аппарат бизнес-партнера или клиента.Вы можете просмотреть свой факсимильный документ с помощью факсимильного приложения на вашем компьютере, прежде чем отправить его получателю. Вы также можете хранить копии исходящих факсимильных документов на своем компьютере для повторной отправки или архивирования.

Программы преобразования

Виртуальные принтеры также используются в программах преобразования документов, также известных как универсальные конвертеры документов, для преобразования документа в файл изображения для открытия на любой платформе, включая Windows, Mac и Linux. Программы создают файл, который сохраняет макет и шрифты документа, тем самым избавляя от беспокойства об отсутствующих шрифтах или изменениях в структуре документа.Преобразованный документ сохраняется не в формате PDF, а в формате изображения, например JPG.

Приложения предварительного просмотра печати

Некоторые приложения, включая текстовые редакторы и настольные издательские приложения, включают функцию предварительного просмотра печати, которая позволяет вам увидеть, как ваш документ будет выглядеть напечатанным. Функция предварительного просмотра использует компонент виртуального принтера для создания предварительного просмотра, но вы не можете сохранить файл предварительного просмотра или поделиться предварительным просмотром с другими. Функция предварительного просмотра печати обычно содержит кнопку «Печать», которая позволяет отправить документ на физический или виртуальный принтер для печати.

Удаление

Как и физический принтер, вы также можете удалить виртуальный принтер, если он вам больше не нужен или не хотите, чтобы он находился на компьютере в вашем офисе. В принтере может быть или не быть собственной программы удаления. Если программа для удаления недоступна, вы можете удалить виртуальный принтер с помощью утилиты Windows «Удалить или изменить программу».

.Учебники по виртуальному принтеру

- два пилотных проекта


На главную Загрузить Цены Часто задаваемые вопросы Руководство Учебные пособия Известные проблемы Новости

Здесь вы можете найти различные примеры использования нашей технологии виртуального принтера в ваших приложениях. Проиллюстрируем примеры кодом на C ++.

  1. Как перенести информацию с принтера в клиентское приложение
  2. Как создать собственное приложение предварительного преобразования
  3. Как создать собственное приложение пост-конвертера
  4. Как создать собственное приложение пост-конвертера, совместимое с режимом раннего доступа
  5. Как получить и установить ориентацию бумаги в принтере
  6. Как создать, добавить, установить, перечислить, получить и удалить бумажную форму для указанного принтера
  7. Как получить, установить и пересчитать лоток для бумаги для указанного принтера
  8. Как получить, установить и пересчитать разрешения печати для указанного принтера
  9. Как пересчитать данные формы бумаги для указанного принтера
  10. Как получить и установить DEVMODE для указанного принтера
  11. Как подсчитать принтеры в системе
  12. Как запустить, остановить, получить текущее состояние и перечислить зависимости для указанной службы Windows
  13. Как устанавливать, получать и удалять настройки для основных функций драйвера виртуального принтера
1.Как получить информацию с принтера в ваше клиентское приложение

После отправки документа на принтер он создает файл INI, в котором хранится вся необходимая информация о задании печати и файлах вывода:

INI-файл может быть передан вашему приложению через командную строку, именованный канал или сообщение WM_COPYDATA, для получения дополнительных сведений см. Документацию.

Для чтения информации из файла INI рекомендуем использовать вызовы WinAPI:

GetPrivateProfileInt для чтения целочисленного значения из файла INI:

[код C ++]

 // Получает значения ширины и длины бумаги из раздела [Документ] void foo (WCHAR const * pathToIniFile) { int width = GetPrivateProfileInt (L «Документ», L «Ширина бумаги», 0, pathToIniFile); int length = GetPrivateProfileInt (L «Документ», L «PaperLength», 0, pathToIniFile); } 

GetPrivateProfileString для чтения строкового значения из файла INI:

[код C ++]

 // Получает имя устройства из раздела [Device] и имя документа из раздела [Document]: void boo (WCHAR const * pathToIniFile) { DWORD const size = 256; WCHAR deviceName [размер] = {0}; WCHAR documentName [размер] = {0}; GetPrivateProfileString (L «Устройство», L «Имя устройства», L «», имя устройства, размер, pathToIniFile); GetPrivateProfileString (L «Документ», L «Имя», L «», имя документа, размер, pathToIniFile); } 

2.Как создать собственное приложение предварительного преобразования

Pre-converter - это приложение, которое виртуальный драйвер принтера вызывает перед преобразованием файлов EMF.

Создайте собственный предварительный конвертер, если хотите:

  • Обработайте файлы EMF перед их печатью, например, отредактируйте их
  • Установить пользовательские настройки преобразования EMF
  • Определите для каждого конкретного задания печати, будет ли оно принято или отклонено для печати

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

Вход и выход предварительного преобразователя следующие:

Драйвер виртуального принтера

вызывает предварительный преобразователь, передавая путь к файлу INI со свойствами задания на печать. В соответствии с вашими потребностями вы можете настроить драйвер виртуального принтера для отправки пути к файлу INI предварительному преобразователю через командную строку, именованный канал или сообщение WM_COPYDATA.

Как работает предварительный преобразователь

Virtual Printer Driver получает задание на печать, извлекает файлы EMF, приостанавливает свои процессы, вызывает предварительный преобразователь и не возобновляет работу до тех пор, пока предварительный преобразователь не обновит статус задания на печать или просто не закроет.

Файл INI на этапе предварительного преобразования выглядит следующим образом:

INI-файл содержит пути ко всем файлам EMF в разделе [EMF] файла и статус задания на печать в разделе [Предварительное преобразование].

После обработки файлов EMF и настройки драйвера виртуального принтера предварительный преобразователь должен обновить статус задания на печать в файле INI.

Чтобы принять задание на печать, установите для параметра «Статус» значение «возобновлено» в файле INI:

 [Предварительное преобразование] Статус = возобновлено 

Чтобы отклонить задание на печать, установите для параметра «Статус» значение «отменено» в файле INI:

 [Предварительное преобразование] Статус = отменен 

Обратите внимание, что сразу после того, как предварительный преобразователь обновляет файл INI, драйвер виртуального принтера возобновляет свои процессы.Поэтому, если предварительный преобразователь обновляет статус перед обработкой EMF, драйвер виртуального принтера, вероятно, будет использовать их в исходном состоянии, поскольку у предварительного преобразователя нет времени на их изменение.

Настройка предварительного преобразователя

Настройте предварительный преобразователь для виртуального драйвера принтера в соответствии с разделом «Настройки приложения».

Пример

Давайте создадим простое консольное приложение для предварительного преобразования, которое получает путь к файлу INI через командную строку и решает продолжить процесс преобразования, если «HorizontalResolution» и «VerticalResolution» меньше или равно 300, а размер бумаги меньше или равно 2286 x 3048 в десятках мм (9 x 12 дюймов).

Пример исходного кода и решения Visual Studio 2013 доступны здесь.

[код C ++]

 #include  int wmain (int argc, WCHAR const * argv []) { если (argc! = 2) возврат 1; WCHAR const * pathToIniFile = argv [1]; int horzRes = GetPrivateProfileInt (L "Документ", L "HorizontalResolution", 0, pathToIniFile); int vertRes = GetPrivateProfileInt (L «Документ», L «Вертикальное разрешение», 0, pathToIniFile); int paperWidth = GetPrivateProfileInt (L «Документ», L «Ширина бумаги», 0, pathToIniFile); int paperLength = GetPrivateProfileInt (L «Документ», L «PaperLength», 0, pathToIniFile); if (horzRes> 300 || vertRes> 300 || paperWidth> 2286 || paperLength> 3048) { // пропустить преобразование WritePrivateProfileString (L «Предварительное преобразование», L «Статус», L «Отменено», pathToIniFile); } else { // принимаем преобразование WritePrivateProfileString (L «Предварительное преобразование», L «Статус», L «возобновлено», pathToIniFile); } возврат 0; } 

Мы должны установить настройки предварительного преобразователя для виртуального драйвера принтера.

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

  1. Откройте реестр и найдите ключ «HKCU / Software / Two Pilots Demo Printer / Application».
  2. В этом ключе создайте ключ «Preconverter».
  3. Добавьте следующие значения в «Preconverter»:
Имя значения Тип значения Описание
Включено REG_DWORD Включает или отключает предварительный преобразователь.Для включения установите значение «1».
Запускаемый файл REG_SZ Полный путь к приложению предварительного конвертера. Например:
C: \ Program Files \ Two Pilots Demo Printer \ pre-converter.exe
Режим передачи REG_DWORD Способ получения предварительным преобразователем пути к файлу INI.Установите «0» для приема через командную строку.

После этого мы можем использовать наш предварительный преобразователь.

Совет: Если вы хотите скрыть приложение предварительного преобразования, вы должны создать приложение Win32 (не консоль) и изменить основную запись:

[код C ++]

 int APIENTRY wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) { int argc = 0; WCHAR ** argv = CommandLineToArgvW (GetCommandLineW (), & argc); // вот тот же код, что и в предыдущей версии приложения предварительного конвертера LocalFree (argv); возврат 0; } 

3.Как создать собственное приложение для постконвертера

Post-converter - это приложение, которое виртуальный драйвер принтера вызывает после преобразования файлов EMF.

Создайте свой собственный пост-конвертер, если хотите:

  • Обработка файлов результатов после печати
  • Покажите результат вашему покупателю
  • Получить дополнительную информацию от Пользователя и использовать ее для дальнейшей обработки

Используя приложение пост-конвертера, вы можете обрабатывать файлы результатов по мере необходимости.

Вход пост-преобразователя следующий:

Драйвер виртуального принтера

вызывает пост-конвертер, передавая путь к файлу INI со свойствами задания на печать и пути к файлам результатов. В соответствии с вашими потребностями вы можете настроить драйвер виртуального принтера для отправки пути к файлу INI постконвертеру через командную строку, именованный канал или сообщение WM_COPYDATA.

Как работает пост-конвертер

Virtual Printer Driver получает задание на печать, извлекает файлы EMF, обрабатывает файлы EMF и вызывает пост-конвертер.

INI-файл на этапе пост-конвертации выглядит так:

Файл INI содержит пути ко всем файлам EMF, BMP, JPEG, TIFF, PNG, PDF и текстовым файлам в соответствующих разделах.

Настройка постконвертера

Настройте пост-конвертер для виртуального драйвера принтера в соответствии с разделом «Настройки приложения» в документации.

Пример

Давайте создадим простое консольное приложение для пост-конвертации, которое будет вызывать программу просмотра файлов PNG по умолчанию.

Пример исходного кода и решения Visual Studio 2013 доступны здесь.

[код C ++]

 #include  #include  int wmain (int argc, WCHAR const * argv []) { если (argc! = 2) возврат 1; WCHAR const * pathToIniFile = argv [1]; DWORD count = GetPrivateProfileInt (L «PNG», L «Count», 0, pathToIniFile); если (! количество) возврат 0; size_t const pathSize = 1024; WCHAR path [pathSize] = {0}; size_t const keySize = 32; Ключ WCHAR [размер ключа] = {0}; for (DWORD i = 0; i  

Мы должны установить настройки пост-конвертера для драйвера виртуального принтера.

Чтобы настроить наше приложение как пост-конвертер, сделайте следующее:

  1. Откройте реестр и найдите ключ «HKCU / Software / Two Pilots Demo Printer / Application».
  2. В этом ключе создайте ключ «Постконвертер».
  3. Добавьте в «Постконвертер» следующие значения:
Имя значения Тип значения Описание
Включено REG_DWORD Включает или отключает пост-конвертер.Для включения установите значение «1».
Запускаемый файл REG_SZ Полный путь к приложению пост-конвертера. Например:
C: \ Program Files \ Two Pilots Demo Printer \ post-converter.exe
Режим передачи REG_DWORD Способ получения постконвертером пути к файлу INI.Установите «0» для приема через командную строку.

После этого мы можем использовать наш постконвертер.

Совет: Если вы хотите скрыть свое приложение пост-конвертера, вы должны создать приложение Win32 (не консоль) и изменить основную запись:

[код C ++]

 int APIENTRY wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) { int argc = 0; WCHAR ** argv = CommandLineToArgvW (GetCommandLineW (), & argc); // вот тот же код, что и в предыдущей версии приложения постконвертера LocalFree (argv); возврат 0; } 

4.Как создать собственное приложение пост-конвертера, совместимое с режимом раннего доступа

Ранний доступ - это режим виртуального драйвера принтера, который позволяет получать пути к преобразованным файлам в процессе преобразования.

Используйте режим раннего доступа, если хотите:

  • сократить время обработки документов
  • показать результаты пользователю как можно скорее

Вход пост-преобразователя в режиме раннего доступа следующий:

Как работает ранний доступ

Драйвер виртуального принтера получает задание на печать, вызывает путь передачи пост-конвертера к файлу INI со свойствами задания на печать.

Файл INI на этом этапе выглядит так:

INI-файл содержит статус задания на печать в разделе [Документ]. На этом этапе он установлен на «Спулинг».

Для каждой страницы задания на печать, драйвер виртуального принтера:

  • Распаковать файл EMF
  • Обработка файла EMF
  • Передает пути к файлам результатов в пост-конвертер

Пути к файлам результатов запакованы в пакет. В каждом пакете хранится имя устройства, идентификатор задания на печать и пути к файлам результатов с нулем ('\ 0') в качестве разделителя и двойным нулем в конце пакета.

Например, упаковка:

«Демонстрационный принтер Two Pilots \ 017 \ 0c: \ Output \ result.emf \ 0c: \ Output \ result.png \ 0 \ 0»

поступает с устройства «Two Pilots Demo Printer», идентификатор задания - 17, и есть два файла «c: \ Output \ result.emf» и «c: \ Output \ result.png».

В конце преобразования драйвер виртуального принтера передает путь к файлу INI в пост-конвертер. Файл INI на этом этапе выглядит так:

Статус задания на печать в разделе [Документ] установлен на «Напечатано».

Пример

Давайте создадим приложение Win32, которое получает данные через сообщение WM_COPYDATA и показывает файл BMP в программе просмотра по умолчанию.

Пример исходного кода и решения Visual Studio 2013 доступны здесь.

Пример кода

ниже показывает обработку WM_COPYDATA в диалоговой процедуре.

[код C ++]

 BOOL CALLBACK DialogProc (HWND hDlg, сообщение UINT, WPARAM wParam, LPARAM lParam) { switch (Сообщение) { case WM_COPYDATA: { COPYDATASTRUCT * data = (COPYDATASTRUCT *) lParam; // пакет - это массив строк "значение0 \ 0значение1 \ 0значение2 \ 0… \ 0 \ 0" WCHAR const * package = (WCHAR const *) data-> lpData; std :: wstring fileName (пакет); // Получаем расширение fileName std :: size_t index = имя_файла.rfind ('.'); std :: wstring extension = L ""; если (индекс! = std :: string :: npos) extension = fileName.substr (index + 1); if (! _wcsicmp (extension.c_str (), L "ini")) { // Получен INI-файл. // Здесь мы можем получить информацию о задании печати и внести некоторые изменения в настройки VPD } else { // пути к преобразованным файлам, полученным в формате "имя принтера \ 0 id задания \ 0file0 \ 0file1 \ 0… \ 0 \ 0" пакет + = wcslen (пакет) + 1; // пропускаем заголовок "имя принтера \ 0" пакет + = wcslen (пакет) + 1; // пропускаем заголовок "id задания \ 0" WCHAR const * ptr = package; while (ptr [0]) { fileName = ptr; // находим расширение fileName index = имя_файла.rfind ('.'); if (index! = std :: string :: npos) { extension = fileName.substr (index + 1); if (! _wcsicmp (extension.c_str (), L "bmp")) {// найден BMP файл images.addImage (имя_файла); updateStatics (hDlg, currentImage, images.getSize (), images.getImage (currentImage) .c_str ()); InvalidateRect (hDlg, NULL, TRUE); возврат 0; } } ptr + = wcslen (ptr) + 1; } } возврат 0; } //… } 

Мы должны установить настройки пост-конвертера для драйвера виртуального принтера.

Чтобы настроить наше приложение как пост-конвертер, сделайте следующее:

  1. Откройте реестр и найдите ключ «HKCU / Software / Two Pilots Demo Printer / Application».
  2. В этом ключе создайте ключ «Постконвертер».
  3. Добавьте в «Постконвертер» следующие значения:
Имя значения Тип значения Описание
Включено REG_DWORD Включает или отключает пост-конвертер.Для включения установите значение «1».
Запускаемый файл REG_SZ Полный путь к приложению пост-конвертера. Например:
C: \ Program Files \ Two Pilots Demo Printer \ Early-access.exe.
Режим передачи REG_DWORD Способ получения постконвертером пути к файлу INI.Установите «1» для получения через сообщение WM_COPYDATA.
Ранний доступ REG_DWORD Включает или отключает режим раннего доступа. Для включения установите значение «1».
Класс окна REG_SZ Класс окна приложения компонента. Например, ClientAppClass
Заголовок окна REG_SZ Заголовок окна приложения компонента.Например, ClientAppTitle.

После этого мы можем использовать наш пост-конвертер в режиме раннего доступа.

5. Как получить и установить ориентацию бумаги в принтере

В этом примере мы используем API VPD SDK, который распространяется как часть пакета Devkit, вы можете скачать его здесь.

[код C ++]

 #include  void paperOrientationTest (std :: wstring const & printerName) { // получаем ориентацию бумаги vpd :: PaperOrientation result; vpd :: getPaperOrientation (имя_принтера, результат); если (результат == vpd :: PaperOrientationLandscape) возвращение; // устанавливаем ориентацию бумаги в альбомный режим vpd :: setPaperOrientation (имя_принтера, vpd :: PaperOrientationLandscape); } 

6.Как создать, добавить, установить, перечислить, получить и удалить бумажную форму для указанного принтера

В этом примере мы используем API VPD SDK, который распространяется как часть пакета Devkit, вы можете скачать его здесь.

[код C ++]

 #include  void paperFormsTest (std :: wstring const & printerName) { // создаем новую бумажную форму vpd :: PaperForm testForm; wcsncpy_s (testForm.mName, L "тестовая форма", vpd :: PaperForm :: paperFormSize - 1); testForm.mWidth = testForm.mHeight = 1234.0f; // ширина и высота 1234.0 testForm.mMeasure = vpd :: PaperSizeMeasureMetrics; // ширина и высота в метриках testForm.mPrecision = vpd :: PaperSizePrecisionNormal; // ширина и высота с нормальной точностью, то есть мм или дюймы // добавляем бумажную форму в список форм принтера vpd :: addPaperForm (имя_принтера, testForm); // устанавливаем форму "тестовой формы" для выбранного принтера vpd :: setPaperForm (имя_принтера, testForm); // перечисляем бумажные формы vpd :: AutoReleasePtr  forms (0); std :: size_t size = 0; vpd :: enumPaperForms (имя_принтера, forms.getRef (), размер, vpd :: PaperSizeMeasureMetrics); vpd :: PaperForm form; for (std :: size_t i = 0; i  

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

В этом примере мы используем API VPD SDK, который распространяется как часть пакета Devkit, вы можете скачать его здесь.

[код C ++]

 #include  void paperBinTest (std :: wstring const & printerName) { // подсчитываем лотки для бумаги vpd :: AutoReleasePtr  бины (nullptr); std :: size_t size = 0; int result = vpd :: enumPaperBins (имя_принтера, bins.getRef (), размер); // получаем корзину для бумаги WORD bin = 0; vpd :: getPaperBin (имя_принтера, корзина); если (bin == DMBIN_CASSETTE) возвращение; for (std :: size_t i = 0; i  

8. Как получить, установить и пересчитать разрешения печати для указанного принтера

В этом примере мы используем API VPD SDK, который распространяется как часть пакета Devkit, вы можете скачать его здесь.

[код C ++]

 #include  void resolutionTest (std :: wstring const & printerName) { // получаем разрешение принтера vpd :: PrintResolution resolution; vpd :: getPrintResolution (имя_принтера, разрешение); если (разрешение.mDpiX <= 300 || разрешение.mDpiY <= 300) возвращение; // перечисляем разрешения принтера vpd :: AutoReleasePtr  разрешения (nullptr); std :: size_t size = 0; vpd :: enumPrintResolutions (имя_принтера, разрешениеs.getRef (), размер); for (std :: size_t i = 0; i  

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

В этом примере мы используем API VPD SDK, который распространяется как часть пакета Devkit, вы можете скачать его здесь.

[код C ++]

 #include  void formInfoTest (std :: wstring const & printerName) { // перечисляем информацию о формах для выбранного принтера vpd :: AutoReleasePtr  forms (nullptr); std :: size_t size = 0; vpd :: enumFormInfo (имя принтера, forms.getRef (), размер); } 

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

В этом примере мы используем API VPD SDK, который распространяется как часть пакета Devkit, вы можете скачать его здесь.

[код C ++]

 #include  void devmodeTest (std :: wstring const & printerName) { // получить DEVMODE для указанного принтера vpd :: Devmode devmode (vpd :: getDevmode (имя_принтера)); // изменяем DEVMODE devmode-> dmFields | = DM_COPIES | DM_COLLATE | DM_DUPLEX; devmode-> dmCopies = 1; devmode-> dmCollate = DMCOLLATE_FALSE; devmode-> dmDuplex = DMDUP_HORIZONTAL; // устанавливаем DEVMODE vpd :: setDevmode (имя_принтера, devmode); } 

11.Как пронумеровать принтеры в системе

В этом примере мы используем API VPD SDK, который распространяется как часть пакета Devkit, вы можете скачать его здесь.

[код C ++]

 #include  void printerTest (void) { vpd :: AutoReleasePtr  принтеры (nullptr) std :: size_t size = 0; // перечисляем локальные принтеры vpd :: enumPrinters (vpd :: PrinterLocationLocal, printers.getRef (), размер); для (std :: size_t i = 0; i  

12. Как запустить, остановить, получить текущее состояние и перечислить зависимости для указанной службы Windows

В этом примере мы используем API VPD SDK, который распространяется как часть пакета Devkit, вы можете скачать его здесь.

[код C ++]

 #include  void serviceTest (std :: wstring const & serviceName) { // получаем текущее состояние сервиса Состояние DWORD = 0; vpd :: getServiceCurrentState (имя_службы, состояние); switch (состояние) { case SERVICE_STOPPED: // запускаем службу vpd :: startService (имя_службы); перерыв; case SERVICE_RUNNING: // остановить службу vpd :: stopService (имя_службы); перерыв; } // перечисляем службы, которые зависят от выбранной службы vpd :: AutoReleasePtr  services (nullptr); std :: size_t size = 0; vpd :: enumDependentServices (имя_службы, services.getRef (), размер); для (std :: size_t i = 0; i  

13. Как устанавливать, получать и удалять настройки для основных функций драйвера виртуального принтера

Настройки виртуального драйвера принтера, хранящиеся в структурах POD, например, структура текстовых настроек:

[код C ++]

 struct TextSettings { беззнаковый длинный mEnable; / ** <включить или отключить формат файла ТЕКСТ * / беззнаковый длинный mMultipage; / ** <включить или отключить многостраничность * / TextEncoding mEncoding; / ** <кодировка текста * / беззнаковый длинный mWriteBOM; / ** <включение или отключение спецификации в текстовых файлах * / беззнаковое длинное mSingleLineInterval; / ** <установить ширину интервала по оси OY, в котором два слова находятся в одной строке * / беззнаковый длинный mSingleWordInterval; / ** <расстояние между двумя словами, которые должны быть в одном слове * / unsigned long mDebug; / ** <включить или отключить вывод отладки в текстовых файлах * / unsigned long mKeepFormatting; / ** <включить или отключить вывод в текстовом формате * / беззнаковый длинный mDefaultBidirectionalAlgorithm; / ** <использовать двунаправленный алгоритм по умолчанию * / unsigned long mCleanup; / ** <удалить ТЕКСТОВЫЕ файлы после обработки * / }; 

Для каждой структуры VPD SDK API предоставляет методы установки, получения и удаления, например

[код C ++]

 int getTextSettings (TextSettings & settings, unsigned int hive, std :: wstring const & registryKey); int setTextSettings (TextSettings const & settings, unsigned int hive, std :: wstring const & registryKey); int removeTextSettings (unsigned int hive, std :: wstring const & registryKey); 

, где куст - куст реестра, может принимать одно или несколько из следующих значений:

  • REGISTRY_HKLM: используйте куст HKEY_LOCAL_MACHINE;
  • REGISTRY_HKCU: используйте куст HKEY_CURRENT_USER.

, если улей содержит оба улья HKLM и HKCU, то метод get сначала считывает настройки из улья HKCU.

[код C ++]

 беззнаковый int hive = vpd :: REGISTRY_HKCU | vpd :: REGISTRY_HKLM; 

RegistryKey - это корневой ключ для настроек драйвера виртуального принтера в выбранном улье, например «Software \\ Two Pilots Demo Printer» означает «HKCU \ Software \ Two Pilots Demo Printer» или «HKLM \ Software \ Two Pilots Demo» Принтер ».

В этом примере мы используем API VPD SDK, который распространяется как часть пакета Devkit, вы можете скачать его здесь.

[код C ++]

 #include  void textSettingsTest (void) { std :: wstring const textRoot = std :: wstring (L "Программное обеспечение \\ Двухпилотный демонстрационный принтер"); vpd :: TextSettings textSettings = {0}; // получаем настройки текста vpd :: getTextSettings (textSettings, vpd :: REGISTRY_HKCU | vpd :: REGISTRY_HKLM, textRoot); textSettings.mMultipage = 1; textSettings.mSingleLineInterval = 10; textSettings.mDebug = 1; // сохраняем текстовые настройки в HKLM hive vpd :: setTextSettings (textSettings, vpd :: REGISTRY_HKLM, textRoot); // и удалим текстовые настройки из улья HKCU vpd :: removeTextSettings (vpd :: REGISTRY_HKCU, textRoot); } 


На главную Загрузить Цены Часто задаваемые вопросы Руководство Учебные пособия Известные проблемы Новости

.

Как настроить виртуальный принтер на ПК | Small Business

Виртуальный принтер может конвертировать файлы различных форматов, что упрощает обмен документами с клиентами и заказчиками, которые могут не иметь возможности открывать определенные файлы. Большинство виртуальных принтеров предназначены для преобразования документов и изображений в файлы PDF, которые можно просматривать на любом компьютере с установленным Adobe Reader. Если вы хотите сохранить файл в формате PDF, используйте бесплатный виртуальный принтер, такой как Bullzip PDF Printer.Чтобы преобразовать файл в альтернативный формат, приобретите и установите виртуальный принтер, например ImagePrinterPro или Universal Document Converter.

Загрузите бесплатное приложение Bullzip PDF Printer для преобразования файла в формат PDF (ссылка в разделе "Ресурсы"). Если вы хотите преобразовать файл в альтернативный формат, такой как DOC, XLS или JPEG, загрузите ImagePrinter Pro или Universal Document Converter. На момент публикации ImagePrinter Pro стоит около 30 долларов, а Universal Document Converter - 69 долларов.Чтобы протестировать программу, скачайте бесплатную пробную версию.

Дважды щелкните файл установки приложения, чтобы начать процесс установки. По умолчанию Windows сохраняет загруженные файлы в папке «Загрузки».

Прочтите лицензионное соглашение и установите флажок «Я принимаю соглашение». Нажмите кнопку "Далее."

Нажмите кнопку «Обзор», чтобы выбрать другую папку назначения для виртуального принтера, а затем нажмите «Далее». Если вы хотите сохранить место назначения по умолчанию, пропустите этот необязательный шаг и просто нажмите «Далее».”

Выберите, хотите ли вы использовать виртуальный принтер в качестве принтера по умолчанию на вашем ПК. Нажмите кнопку «Готово», чтобы завершить установку.

Протестируйте приложение, открыв документ или изображение, которое вы хотите преобразовать. Щелкните вкладку «Файл» и выберите параметр «Печать».

Выберите виртуальный принтер в раскрывающемся меню «Принтер» и нажмите «Печать».

Введите имя файла для документа или изображения в диалоговом окне «Сохранить». Если вы используете ImagePrinter Pro или универсальный конвертер документов, щелкните раскрывающееся меню «Сохранить как тип» и выберите предпочтительный выходной формат, например PDF, XLS или TIFF.Если вы используете Bullzip PDF Printer, PDF будет выбран в качестве выходного формата и не может быть изменен. Выберите папку назначения для преобразованного файла и нажмите «Сохранить».

.

Virtual Printer Driver FAQ - часто задаваемые вопросы

  • Какие типы файлов EMF создаются?

    Сгенерированный EMF зависит от операционной системы: EMF 1.0 в Win9x, NT EMF 1.003 в NT4, NT EMF 1.008 в Win2k / XP. Сгенерированные файлы EMF предназначены только для локального преобразования / просмотра, а не для использования на других компьютерах, поскольку они содержат шрифты и графику для конкретной среды. Чтобы сохранить шрифты и графику, вы можете использовать формат PDF в качестве формата выходного файла.PDF также поддерживается нашей технологией виртуального принтера.

  • Может ли драйвер работать с книжной и альбомной ориентацией в одном документе?

    Да. Клиентское приложение может получать информацию об ориентации документа, разрешении и заголовке от виртуального драйвера.

  • Содержит ли сгенерированный файл изображения EMF печатные графические объекты?

    Да. Такие объекты встраиваются в EMF в независимом от устройства формате с информацией о цвете, предоставляемой исходным приложением.

  • Какие инструменты программирования необходимы для сборки драйверов из исходного кода?

    Microsoft Visual Studio 2010 и WDK для Windows 7.

  • Какие инструменты программирования необходимы для сборки собственного MSI-пакета?

    Набор инструментов WiX http://wixtoolset.org

  • Поддерживает ли драйвер EMF разные цветовые режимы?

    EMF не зависит от цветовых режимов дисплея.Вся встроенная графика хранится в независимом от устройства формате. Все необходимые преобразования цвета должны выполняться клиентским приложением.

  • Если я куплю бинарную версию драйверов, могу ли я перейти на исходную версию, оплатив разницу позже?

    Да. Вы можете обновить бинарную версию до версии с исходным кодом, заплатив разницу в любое время.

  • Нужно ли мне приобретать план обслуживания для поддержки и обновлений?

    Включен один год поддержки и обновлений.Дальнейшая поддержка стоит 50% от базовой цены в течение года после первоначального заказа и 100% от базовой цены через год после первоначального заказа.

  • Можно ли использовать принтер для печати из сеанса служб терминалов или подключения к удаленному рабочему столу?

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

  • Я обнаружил ошибку в созданном PDF-документе. Что я должен делать?

    Отправьте нам сгенерированный файл PDF, его исходный файл EMF и исходный документ (если возможно).Мы исправим ошибку как можно скорее.

  • Могу ли я переименовать виртуальный принтер?

    Нет. Имя принтера жестко запрограммировано. Если вы переименуете принтер, он перестанет работать. Вы можете выбрать необходимое имя принтера при покупке драйвера.

  • Нужно ли нам Adobe Acrobat или стороннее программное обеспечение для создания PDF-файлов на виртуальном принтере EMF?

    Нет, не понимаешь. Мы используем нашу собственную библиотеку PDF Creator Pilot для создания файлов PDF.

  • Как мы можем интегрировать виртуальный принтер EMF с нашим клиентским приложением? У вас есть образцы?

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

  • Если я куплю бинарную версию вашего драйвера, могу ли я распространять ее как часть моего программного обеспечения? Должен ли я платить за каждую копию, которую я распространяю вместе с моим программным обеспечением?

    Наши виртуальные принтеры бесплатны.Вы можете распространять их вместе со своими приложениями без каких-либо дополнительных сборов.

  • Если мне потребуется дополнительная настройка вашего виртуального принтера, вы можете сделать это за меня?

    Да, конечно. Мы можем настроить принтер по запросу клиента.

  • Могу ли я извлечь и сохранить метаданные (идентификатор счета-фактуры, итоговую сумму соглашения), введенные в назначенные теги, после печати документа?

    Да, вы можете извлечь дополнительные данные из документов, отправленных на печать, и сохранить их в файле.Свяжитесь с нами для получения подробной информации…

  • Как поделиться виртуальным принтером?

    При совместном использовании принтера в Windows Vista и более поздних версиях необходимо снять флажок «Обработка заданий печати на клиентских компьютерах» на вкладке «Совместное использование» диалогового окна свойств принтера.

    При совместном использовании принтера в XP используйте следующую процедуру, чтобы включить «Всегда отображать задания печати в групповой политике сервера на каждом клиентском компьютере»:

    1. В меню «Пуск» выберите «Выполнить» (в Windows Vista «Выполнить» можно найти в меню «Стандартные») и введите gpedit.msc;

    2. В редакторе объектов групповой политики откройте Конфигурация компьютера, затем Административные шаблоны, а затем Принтеры;

    3. Выберите Всегда отображать задания печати на сервере и щелкните Включено;

    4. Выполните перезапуск службы диспетчера очереди печати.

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

  • Как установить виртуальный принтер в автоматическом режиме?

    MSI-пакет можно установить с помощью утилиты «msiexec» с ключом «/ quiet» «msiexec / i product.msi / quiet ». Также у вас должны быть права администратора.

  • Как указать каталог для установки msi-пакета?

    Вы можете установить свойство «INSTALLFOLDER» для инструмента «msiexec» «msiexec / i product.msi INSTALLFOLDER = path_to_install».

  • Как изменить временную папку для виртуального принтера?

    По умолчанию виртуальный принтер использует временный каталог пользователя из переменных среды «TEMP» или «TMP» для временных файлов.Вы можете изменить это поведение, установив переменную среды «VPD_TEMP» в требуемый временный каталог.

  • Как удалить виртуальный принтер?

    Вы можете удалить виртуальный принтер через меню «Пуск» или «Программы и компоненты». Если у вас возникла ошибка во время процесса удаления, вы можете попробовать удалить его с помощью инструмента «Fixit» от Microsoft http://support.microsoft.com/mats/Program_Install_and_Uninstall.

  • Могу ли я установить два или более виртуальных принтера на одном сервере?

    Да, можно, если у них другие имена.

  • Как проверить свое программное обеспечение? Где его скачать?

    Вы можете скачать демо-сборки с нашего сайта.

  • Когда мы указываем имя виртуального принтера и другую информацию о продукте?

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

  • Какие ограничения демо-версии?

    Демонстрационная версия помещает уведомления в сгенерированные документы.

  • Нам нужна возможность открывать наше программное обеспечение при печати на виртуальном принтере и, таким образом, отображать распечатанный документ в нашей программе. Есть ли у виртуального принтера EMF какая-либо функция, позволяющая запускать .exe после виртуального принтера, получающего задание на печать?

    Да, вы должны указать свое приложение в инструменте свойств принтера (вкладка «Приложение») или настроить его через параметры реестра напрямую «{HKLM, HKCU} \ Software \ Two Pilots Demo Printer \ Application \ Postconverter».Для получения дополнительной информации проверьте здесь.

  • Мы купили ваш виртуальный принтер несколько лет назад. У вас есть документ, объясняющий функциональные различия между нашей версией и последней версией?

    Да. Пожалуйста, взгляните на этот документ.

  • Как отключить спул-пул файлов?

    В Windows NT / 2000 найдите файлы по имени xxxxx.spl, где xxxxx - это идентификатор задания, возвращенный API EnumJobs.

    Однако XP и 2003 создают файлы спула с именем FPnnnnn.spl, где nnnnn больше не является JobID.

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

    Чтобы отключить пул файлов из очереди для каждого принтера, на основе очереди:

    1. Нажмите «Пуск», нажмите «Выполнить», введите «regedit» в поле «Открыть» и нажмите «ОК».
    2. Найдите следующий подраздел реестра, где - это имя вашего принтера: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Print \ Printers \
    3.На правой панели щелкните правой кнопкой мыши «SpoolDirectory», а затем нажмите «Изменить».
    4. В поле «Значение данных» введите место, где вы хотите хранить файлы спула. Например, введите c: \ windows \ system32 \ spool \ printers в качестве расположения по умолчанию.
    5. Закройте редактор реестра.
    6. Перезапустите службу «Диспетчер очереди печати».

    Все новые задания будут иметь формат XXXXX.SPL и XXXXX.SHD и будут нумероваться в соответствии с их JobID.

    Чтобы отключить пул файлов из спула для всех принтеров:

    ( Примечание : этот метод работает только на Windows 2003 Server.Этот метод не работает для Windows XP.)
    1. Нажмите «Пуск», нажмите «Выполнить», введите «regedit» в поле «Открыть» и нажмите «ОК».
    2. Найдите следующий подраздел реестра: HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Print
    3. В меню «Правка» выберите «Создать» и нажмите «Значение DWORD».
    4. В поле «Новое значение №1» введите «DisableServerFilePooling» и нажмите «ENTER».
    5. Щелкните правой кнопкой мыши «DisableServerFilePooling», а затем нажмите «Изменить».
    6. В поле «Значение» введите 1, чтобы отключить объединение файлов буферизации, а затем нажмите «ОК».
    7. Закройте редактор реестра.
    8. Перезапустите службу «Диспетчер очереди печати».

    Все новые задания будут иметь формат XXXXX.SPL и XXXXX.SHD и будут нумероваться в соответствии с их JobID.

  • .

    Смотрите также