2015-10-25 27 views
2

我想创建一个自定义打印机驱动程序来生成图像。为此,我安装了将打印文件转换为postscript的Printer ++。为了将postscript文件转换为图像,我使用了ghostscript。独立的两个流程运行良好,我能够实现所需的。c#注册自定义dll作为处理器到Printer ++配置文件

但是,我需要一个自定义的过程来一次生成图像。我通过Printer++ tutorial,但它没有奏效。 这是我做了什么:

  1. 我安装的打印机++,给了AS-Septane打印机驱动程序的名称。

  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需要部署到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。

谢谢。

+0

感谢@Alexei格式化我的代码。 –

回答

0

记住打印机名称必须相同,你DLL名称

如果你的打印机驱动程序名称是Septane。然后,您必须创建一个项目名称与“Septane”。在这种情况下,项目名称“Test”将不起作用。

相关问题