我研究了在 Java 中预览和打印通用文本的可能性。我所依赖的要求是:
- 我应该能够为预览组件和打印文本指定字体系列和字体大小。
- 打印预览必须与打印文本完全相同。
- 打印必须独立于打印机设备(没有打印机特定命令来定义字体等)。
- 打印约。 20 页通用文本必须立即开始(不得因数据处理造成任何明显延迟)
为了满足上述要求,我首先尝试了 Java Print Service API。我创建了 JTextPane,其中包含要预览和打印的文本。通过使用 JTextPane,我能够指定字体,因此结果看起来很漂亮。为了从 JTextPane 打印数据,我使用了标准程序,该程序独立于打印机设备
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(myTextPane);
pj.print();
如果在执行 print() 方法后 15 秒内无法开始打印 20 页纯文本,那么一切都会好起来的。
但是,当我打印与原始字节数组(“应用程序/八位字节流”)相同的文本时,打印会立即开始,并且使用很少的 PCL 特定命令来设置正确的字体。但这种方法是特定于打印机的,并且预览文本也存在问题,以便预览看起来与打印文本完全相同。
JTextPane 的问题很可能是由于发送到打印机的数据太大(逐像素)而引起的,而第二种解决方案是几个字节的问题。不幸的是,这些解决方案都不足以满足我的需求,因为它们不能满足所有要求。
解决方案可能是打印机控制语言(PCL、ESC/P...)上有一些“外观”,这将允许我独立于打印机设备设置文本字体。虽然无法解决打印预览的问题,但至少可以立即开始打印。
有什么建议如何打印纯文本而不违反上述 4 个标准吗?
最佳答案
上述问题似乎与 Linux 打印驱动程序和 Cups 有关。 我尝试在 Windows 上打印一些文本,一切正常。打印甚至立即开始。
关于java - 在 Java 中预览和打印通用文本的独立于打印机的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8735508/