我研究了在Java中预览和打印通用文本的可能性。我依赖的要求是:
为了满足上述要求,我首先尝试了Java Print Service API。我创建了JTextPane,其中包含要预览和打印的文本。通过使用JTextPane我能够指定字体,因此结果看起来很花哨。为了从JTextPane打印数据,我使用了标准程序,该程序独立于打印机设备
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(myTextPane);
pj.print();
如果打印20页纯文本在执行print()方法后的15秒内无法启动,那么一切都会好的。
然而,当我使用少量PCL特定命令打印与原始字节数组('application / octet-stream')相同的文本来设置正确的字体时,打印开始是无效的。但这种方法是打印机特定的,预览文本也存在问题,因此priview看起来与打印文本完全相同。
JTextPane的问题很可能是由于发送到打印机的数据太大(逐个像素),而第二个解决方案只占几个字节。不幸的是,这些解决方案都不适合我,因为它们不能满足所有要求。
可能的解决方案是,如果打印机控制语言(PCL,ESC / P,...)有一些“外观”,这将允许我独立于打印机设备设置文本字体。打印预览的问题无法解决,但至少打印会立即开始。
有关如何打印纯文本而不违反前述4条标准的建议吗?
答案 0 :(得分:0)
上述问题似乎与Linux打印驱动程序和Cups有关。 我尝试在Windows上打印一些文本,一切正常。打印甚至立即开始。