2015-10-25 2 views
2

Я пытаюсь создать собственный драйвер принтера для создания изображений. Для этого я установил Printer ++, который преобразует файлы печати в postscripts. Чтобы преобразовать файл postscript в изображение, я использую ghostscript. Независимо оба процесса работают нормально, и я могу достичь того, что требуется.C# Зарегистрировать пользовательскую DLL как процессор для файла конфигурации Config ++

Но мне нужен пользовательский процесс для создания изображений за один раз. Я прошел через Printer++ tutorial, но это не сработало. Это то, что я сделал:

  1. Я установил принтер ++ и дал имя драйвера принтера Septane as-.

  2. В Visual Studio я создал проект-тест.

И следующий код в классе Processor.cs:

using System; 
using System.Net.Mail; 
using PrinterPlusPlusSDK; 
namespace Test 
{ 
    public class Processor : PrinterPlusPlusSDK.IProcessor 
    { 
     public PrinterPlusPlusSDK.ProcessResult Process(string key, string psFilename) 
     { 
      //Convert PS to Png 
      psFilename = "b.ps"; 
      MessageBox.Show("Rahul"); 
      ConvertPsToTxt(psFilename); 
     } 
     public static string ConvertPsToTxt(string psFilename, string txtFilename) 
     { 
      var retVal = string.Empty; 
      var errorMessage = string.Empty; 
      var command = "C:\\PrinterPlusPlus\\gs\\gswin64.exe"; 
      var args = string.Format("-dNOPAUSE -dBATCH -dFirstPage=1 -q -r300 -sDEVICE=png256 -sOutputFile=", psFilename, txtFilename); 
      retVal = Shell.ExecuteShellCommand(command, args, ref errorMessage); 
      return retVal; 
     } 
    } 
} 

Этот класс наследует от PrinterPlusPlusSDK.IProcessor и реализует функцию PrinterPlusPlusSDK.ProcessResult процесса. Я протестировал автономный проект консоли (без использования процессора PrinterPlusPlusSDK) и успешно конвертировал ps в png.

  1. Теперь, согласно учебному пособию, dll необходимо развернуть на принтер ++ и зарегистрировать в качестве процессора. Я скопировал Test.dll в папку установки принтера ++ и добавил запись в файл PrinterPlusPlus.exe.config.

Запись конфигурации выглядит следующим образом:

<processors> 
    <add key="Test" 
    value="Test.Processor, Septane, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
</processors> 

Вот и все. Теперь, когда я печатаю файл, он дает ошибку:

Proccessor not found for: Septane

Что я делаю неправильно? Если у кого-то есть лучшая идея для достижения того же, пожалуйста, дайте мне знать. Фактически, мой - коммерческий продукт, поэтому нельзя использовать опции вида CutePDF/VerPDf.

Редактировать: Теперь я знаю, почему я получал ошибку. Процессор не найден. Я переименовал свой принтер в Test, и ошибка исчезла. Я также отредактировал свой код.

Для тестирования я добавил окно сообщения. Я ожидал получить всплывающее окно, как только я дам команду печати. Но это не тот случай. Файл ps генерируется без ошибок, и все. Я не могу просмотреть всплывающее сообщение, и нет файла с преобразованием png. Может кто-то, пожалуйста, помогите мне решить эту проблему хотя бы? Кажется, он не собирает DLL.

Спасибо.

+0

Спасибо @Alexei за форматирование моего кода. –

ответ

0

Помните имя принтера должно быть таким же, как вы Dll имени

Если имя драйвера принтера является Septane. Затем вам необходимо создать название проекта с помощью «Septane». В этом случае имя проекта «Тест» не будет работать.

Смежные вопросы