我正在尝试创建一个自定义打印机驱动程序来生成图像。为此,我安装了print++,它可以将打印文件转换为后记。要将后记文件转换为图像,我使用ghostscript。这两个进程独立运行良好,我能够实现所需的。
但是,我需要一个自定义过程来一次性生成图像。我遵循了Printer++教程,但它不起作用。这是我所做的:
-
我安装了Printer++并将打印机驱动程序命名为- Septane。
-
在Visual Studio中,我创建了一个项目Test.
和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
的Process功能。我已经测试了独立控制台项目(不使用PrinterPlusPlusSDK处理器),并成功地将ps转换为png。
- 现在,按照教程,需要将dll部署到printer++并注册为处理器。我将Test.dll复制到Printer++安装文件夹,并在PrinterPlusPlus.exe.config文件中添加一个条目。
配置项如下:
<processors>
<add key="Test"
value="Test.Processor, Septane, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</processors>
就是这样。现在,当我打印一个文件时,它给出了一个错误:
没有找到:Septane
的处理器
我做错了什么?如果有人有更好的想法实现同样的,请让我知道。实际上,我的是一个商业产品,所以不能使用CutePDF/VerPDf类型的选项。
编辑:我现在知道为什么我得到错误-处理器未找到。我将打印机重命名为Test,错误消失了。我也编辑了我的代码。
为了测试,我添加了一个消息框。我期望得到一个弹出,一旦我给打印命令。但事实并非如此。生成的ps文件没有错误,就是这样。我无法查看弹出消息,也没有png转换文件。至少有人能帮我解决这个问题吗?它似乎根本没有拾取dll。
谢谢。
记住打印机名称必须与您的dll名称相同
如果您的打印机驱动程序名称是Septane。然后你必须用"Septane"创建一个项目名称。在这种情况下,项目名称"Test"将不起作用。