Я пытаюсь создать собственный драйвер принтера для создания изображений. Для этого я установил Printer ++, который преобразует файлы печати в postscripts. Чтобы преобразовать файл postscript в изображение, я использую ghostscript. Независимо оба процесса работают нормально, и я могу достичь того, что требуется.C# Зарегистрировать пользовательскую DLL как процессор для файла конфигурации Config ++
Но мне нужен пользовательский процесс для создания изображений за один раз. Я прошел через Printer++ tutorial, но это не сработало. Это то, что я сделал:
Я установил принтер ++ и дал имя драйвера принтера Septane as-.
В 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.
- Теперь, согласно учебному пособию, 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.
Спасибо.
Спасибо @Alexei за форматирование моего кода. –