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

标签 c# dll printing processor

我正在尝试创建自定义打印机驱动程序来生成图像。为此,我安装了 Printer++,它将打印文件转换为 postscript。要将 postscript 文件转换为图像,我使用的是 ghostscript。独立地,这两个过程都运行良好,我能够实现所需的目标。

但是,我需要一个自定义过程来一次性生成图像。我跟着 Printer++ tutorial但它没有用。 这就是我所做的:

  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处理功能。我已经测试了独立控制台项目(不使用 PrinterPlusPlusSDK 处理器)并且成功地将 ps 转换为 png。

  1. 现在,根据教程,需要将 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>

就是这样。现在,当我打印一个文件时,它给出了一个错误:

Proccessor not found for: Septane

我做错了什么? 如果有人有更好的想法来实现同样的目标,请告诉我。实际上,我的是商业产品,所以不能使用 CutePDF/VerPDf 类选项。

编辑:我现在知道为什么会出现错误 - 找不到处理器。我将我的打印机重命名为 Test,错误消失了。我也编辑了我的代码。

为了测试,我添加了一个消息框。一旦我发出打印命令,我希望得到一个弹出窗口。但事实并非如此。 ps 文件生成时没有错误,仅此而已。我无法查看弹出消息,也没有 png 转换文件。有人可以至少帮我解决这个问题吗?它似乎根本没有提取 dll。

谢谢。

最佳答案

请记住打印机名称必须与您的 dll 名称相同

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

关于c# 将自定义 dll 作为处理器注册到 Printer++ 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33334920/

相关文章:

c# - 如何删除 Windows 10 UWP 应用中 TextBox 控件的默认 "Paste"上下文菜单条目?

c# - 无法在 Visual Studio 2015 中运行迁移

linux - 如何将库链接到 linux (Fedora) 中的可执行程序?

c++ - 如何从 Microsoft Access 调试 dll

c++ - __declspec(dllimport) 如何加载库

c# - 如果我不知道实际的对象类型,如何在 C# 中比较两个 IEnumerable<T>?

c# - 将 DataGridView 导出到 Excel,并应用过滤器 C#

java - 首页上的页面打印帮助

c++ - 我怎样才能在 C++ 中打印一个 char 数组

php - 在包含 php 文件后,我的表的 css 设置在标题位置消失了