2013-12-09 38 views
0

我有麻烦入门建立一个打印监控/打印处理器为使用Windows的Visual Studio 2012旗舰版与WDK 8.基本上,这就是我要完成的:创建打印监控/打印处理器

  • 创建打印监视器(一些应用程序可以打印到),将产生与应打印的内容(如默认XPS打印机或PDF打印机)的文件,然后调用打印处理程序
  • 创建打印处理程序,它将解析生成的文件并对其执行某些操作(检查是否存在某些文本,在线上载文件等)

我觉得像打印处理部分不应该太硬,但与打印监视器开始就是我被困在。我会在VS12中做什么?我看到“打印机驱动程序V4”,“打印机驱动程序V4物品包”和“打印机XPS渲染过滤器”的选项。我应该使用其中一种模板吗?如果是,我会在其中做些什么?任何指向我的方向正确的方向将不胜感激!

编辑:

只是一些更多的澄清 - 我只需要从打印输出的文本,但只得到文本的输出导致没有输出从来源一样,我从各种渠道阅读Firefox等,因为它们将文本打印为字形。

我将使用打印处理器解析为关键字的文本,然后上传信息到Web服务器在特定的格式。打印监视器只需从任何正在打印的应用程序中捕获并保存文本信息。

+0

让我们从头开始。你说你想生成一些打印数据并处理它。打印数据的种类很多,您需要哪一种将决定您应该如何继续。例如,你只需要带图形的文本或文本?你会想要在屏幕上显示这个输出吗?您需要退出编写代码并澄清您的目标。 –

+0

对不起,不太清楚!从技术上讲,我只需要打印输出中的文本,但是我从各种来源读到,获取纯文本输出导致Firefox等来源无输出,因为它们将文本打印为字形。我不需要在屏幕上输出它;我将解析关键字文本,然后以特定格式将该信息上传到Web服务器。 – Steve

回答

1

,正如你在评论中指出,某些应用程序如Firefox打印使用字形索引,而不是字符。事实上,很多人都会这样做,而且这种情况越来越普遍。你需要的是打印驱动程序。好消息是,微软已经为您写了它,并为您提供了WDK中的示例源代码。首先查看this以了解您的选择。 Unidriver可能稍微简单一些,但Postscript驱动程序具有生成输出的优势,可以很容易地将其转换为PDF或其他保留文本信息的格式(而不是栅格页面图像会丢失所有文本信息)。就我而言,甚至不考虑XPS;这只是一场全方位的灾难。

要处理字形索引,您需要将代码添加到驱动程序的OEMTextOut函数中,该函数使用字体的cmap表将字形索引转换回字符代码。我不了解任何解析字体文件的公共领域库,因此您可能必须编写自己的代码才能执行此操作。 (提示:如果您仅支持OpenType/TrueType字体,则将覆盖所有打印应用程序的99%)。

获取微软样本代码来构建,安装和运行主要是简单的,但如果你是新来的WDK和安装打印驱动程序,就花费了一周或更多的只是计划。字形索引翻译部分要复杂得多,你应该计划花费更多的时间。