在Java中预览和打印通用文本的独立于打印机的方式

在Java中预览和打印通用文本的独立于打印机的方式,java,swing,printing,jtextpane,Java,Swing,Printing,Jtextpane,我研究了在Java中预览和打印通用文本的可能性。我所依赖的要求是: 我应该能够为预览组件和打印文本指定字体系列和字体大小。 打印预览的外观必须与打印文本完全相同。 打印必须独立于打印机设备,没有打印机特定的命令来定义字体等。。 必须立即开始打印约20页的通用文本,不得因数据处理而造成任何重大延迟 为了满足上述要求,我首先尝试了Java打印服务API。我创建了JTextPane,其中包含要预览和打印的文本。通过使用JTextPane,我能够指定字体,因此结果看起来很漂亮。为了从JTextPane打

我研究了在Java中预览和打印通用文本的可能性。我所依赖的要求是:

我应该能够为预览组件和打印文本指定字体系列和字体大小。 打印预览的外观必须与打印文本完全相同。 打印必须独立于打印机设备,没有打印机特定的命令来定义字体等。。 必须立即开始打印约20页的通用文本,不得因数据处理而造成任何重大延迟 为了满足上述要求,我首先尝试了Java打印服务API。我创建了JTextPane,其中包含要预览和打印的文本。通过使用JTextPane,我能够指定字体,因此结果看起来很漂亮。为了从JTextPane打印数据,我使用了标准程序,该程序独立于打印机设备

PrinterJob pj = PrinterJob.getPrinterJob(); 
pj.setPrintable(myTextPane);
pj.print();
如果打印方法执行后15秒内无法开始打印20页纯文本,一切都会好起来

但是,当我打印与原始字节数组“application/octet stream”相同的文本时,打印会立即开始,只需使用一些特定于PCL的命令来设置适当的字体。但这种方法是特定于打印机的,而且预览文本时也存在问题,因此priview看起来与打印文本完全相同

JTextPane的问题很可能是由于发送到打印机的数据逐像素太大,而第二个解决方案是几个字节的问题。不幸的是,这些解决方案对我来说都不够,因为它们不能满足所有的要求

如果在打印机控制语言PCL、ESC/p等上有一些“门面”,那么解决方案可能是。。。这将允许我独立于打印机设备设置文本字体。打印预览的问题不会得到解决,但至少打印会立即开始


关于如何打印纯文本而不违反上述4个标准,有什么建议吗?

上述问题似乎与Linux打印驱动程序和Cups有关。 我试着在Windows上打印一些文本,一切正常。甚至可以立即开始打印