我想创建一个自定义打印机驱动程序来生成图像。为此,我安装了将打印文件转换为postscript的Printer ++。为了将postscript文件转换为图像,我使用了ghostscript。独立的两个流程运行良好,我能够实现所需的。c#注册自定义dll作为处理器到Printer ++配置文件
但是,我需要一个自定义的过程来一次生成图像。我通过Printer++ tutorial,但它没有奏效。 这是我做了什么:
我安装的打印机++,给了AS-Septane打印机驱动程序的名称。
在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需要部署到printer ++并注册为处理器。我将Test.dll复制到Printer ++安装文件夹并向PrinterPlusPlus.exe.config文件添加了一个条目。
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格式化我的代码。 –