注册自定义dll作为处理器到Printer++配置文件



我正在尝试创建一个自定义打印机驱动程序来生成图像。为此,我安装了print++,它可以将打印文件转换为后记。要将后记文件转换为图像,我使用ghostscript。这两个进程独立运行良好,我能够实现所需的。

但是,我需要一个自定义过程来一次性生成图像。我遵循了Printer++教程,但它不起作用。这是我所做的:

  1. 我安装了Printer++并将打印机驱动程序命名为- Septane。

  2. 在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"将不起作用。

    最新更新