【发布时间】:2012-08-13 18:20:17
【问题描述】:
我正在编写一个应用程序,它将数据流作为输入(来自Redmon)发送到打印机。数据流具有呈现为单色位图的文本,打印机将使用该位图将其打印在纸上。我计划解析这个数据流并理解发送到打印机的文本。我的应用程序会解析来自任何 Windows 应用程序的数据并发送到打印机。
我解析数据流的方式是匹配像素信息(逐字节),如果完全匹配,那么我可以唯一地识别一个字符。为此,我假设所有 Windows 应用程序都使用相同的 Windows 渲染器以像素为单位渲染字体。因此,如果这些应用程序(包括基于 java 的应用程序)使用相同的字体和字体大小来打印它们的文本,我总是会从任何应用程序中为特定字符获取相同的字节序列。这是一个正确的假设还是 Windows 是否为应用程序提供了各种选项来渲染文本以进行打印?
还有一个库可以用于使用单色位图数据进行字符识别吗?
注意:我使用的打印机是 ESC/POS 兼容的打印机。这些打印机的打印机驱动程序将要打印的数据作为单色位图发送。
【问题讨论】:
-
老兄,这行不通。因为一方面,打印机驱动程序不会将位图发送到打印机。他们有自己的语言,便宜的有一种非常专有的语言。选择 XPS 打印机作为您的默认打印机,现在您获得了一个可以轻松阅读的 XPS 文档。
-
@HansPassant:感谢您的回复!!实际上,我正在使用 ESC/POS 打印机驱动程序将要打印的文本作为单色位图发送。如果打印应用程序是记事本/Word/Notepad++,我也能够成功扫描此位图数据。但我想确保所有 Windows 应用程序是否会针对给定的字体和字体大小发送相同的单色位图。