Как подключиться к драйверу принтера в C #? - PullRequest
0 голосов
/ 27 октября 2011

У меня есть задача конвертировать несколько форматов, таких как .pdf, .doc, .jpg, .xls, .txt, .bmp типы файлов, в формат .png. Я нашел драйвер печати, который делает это.

Но как мне подключиться к этому драйверу принтера в .net? Это будет компонент на стороне сервера. Мне нужно распечатать документы в папку с помощью этого драйвера принтера.

Мне интересно, как это можно сделать.

Спасибо

Ответы [ 3 ]

1 голос
/ 28 октября 2011

Исходя из ваших обновленных комментариев, звучит так, как будто вы хотите конвертировать различные изображения и типы документов в один общий тип изображения.Процесс выбора одного из нескольких возможных исходных форматов, которые вы упомянули, и преобразования его в растровый формат, такой как .PNG, называется RENDERING или RASTERIZING.Вы хотите взять один из входных форматов, отобразить его в растровом представлении, а затем записать в файл в формате .PNG.Хотя это, безусловно, можно сделать с помощью драйвера принтера, для этого обычно следует полагаться на установленное приложение, которое позволит вам передать исходный документ для печати в драйвер.Чтобы это работало, каждый из типов исходных файлов, которые вы хотите обрабатывать таким образом, должен иметь установленное приложение, которое может выполнять действия из оболочки и выполнять то, что вы запрашиваете.Например, если вы хотите сделать это с файлом .DOC, вам нужно установить Microsoft Word, так как он правильно отвечает на команду оболочки PRINT.Однако ограничение метода на основе оболочки состоит в том, что он всегда будет печатать на системном принтере DEFAULT.Таким образом, ваш драйвер должен быть установлен в качестве принтера по умолчанию для машины, на которой вы собираетесь запустить процесс.Поэтому вам нужно будет проверить, есть ли у каждого из типов источников, которые вы хотите иметь возможность обрабатывать, установленное или устанавливаемое приложение, которое позволит вам распечатать их с помощью оболочки и глагола действия PRINT.

Ссылки URL:

Глаголы оболочки Windows и ассоциации файлов

Создание обработчиков контекстного меню

Проблема с этим методом не все приложения реагируютк глаголу ПЕЧАТЬ правильно или вообще.Обычно это работает со всеми основными приложениями Microsoft, но вам следует протестировать любые другие типы документов, которые вы хотите поддерживать, прежде чем углубляться в эту технику.

Это также поднимает другие вопросы, которые даже не начинаются, например, что делать с несколькими форматами страниц.Вы перечислили несколько типов изображений, которые просты и могут быть преобразованы в файлы PNG довольно напрямую.Но как вы хотите визуализировать многостраничные файлы документов Word в формат PNG?Вы собираетесь использовать только один очень большой PNG со всеми страницами один за другим?Или вы собираетесь использовать один файл PNG для соответствующей страницы исходного документа?Метод драйвера принтера может не дать вам большого контроля над этим.

В зависимости от некоторых из этих деталей, а также от того, насколько вам нужен контроль и надежность в процессе, вы можете рассмотреть совершенно другой путь к вашему процессу.Возможно, вам следует подумать об использовании инструментов / библиотек, которые могут читать исходные форматы файлов, которые вы хотите поддерживать, и отображать их напрямую, после чего вы можете сохранять их в свои файлы PNG.Одна библиотека, которую я использовал в прошлом, которая, казалось бы, подходила и давала вам высокую степень контроля над процессом преобразования (рендеринга / растеризации), - это LeadTools.Это довольно дорогой продукт, но мой опыт показывает, что он надежно поддерживает широкий спектр форматов.

SDK LeadTools для чтения PDF и документов

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

1 голос
/ 27 октября 2011

Компонент на стороне сервера подразумевает то, что за ним не сидит человек (по крайней мере, человек, который пытается использовать этот принтер).Если это так, то драйвер печати не будет работать - драйверы печати, которые записывают свои выходные данные на диск вместо устройства всегда, по моему опыту, просят пользователя выбрать место для сохранения файла (откройте диалоговое окно «Сохранить как»).

0 голосов
/ 27 октября 2011

Чтобы немного рассказать о том, что упомянул Boo:

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

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

Чтобы продолжить этот путь, вы должны убедиться, что ваш серверный компонент знает, как читатьи отображать содержимое файлов каждого типа (.jpg, .pdf, .doc и т. д.).

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

Для получения более подробной информации перейдите по ссылке: http://msdn.microsoft.com/en-us/magazine/cc188767.aspx

...