无法在 Windows 7 中使用 Java 8 打印文本文件
Posted
技术标签:
【中文标题】无法在 Windows 7 中使用 Java 8 打印文本文件【英文标题】:Can't print text file using Java 8 in Windows 7 【发布时间】:2014-12-27 02:06:54 【问题描述】:我创建了一个报告并将其导出为文本文件,以便在矩阵打印机中打印,但是,作业的结果是一个空白页。我在ubuntu中做了同样的事情,它打印正确。 是 Java 错误吗?
这是我向您展示问题的示例代码:
public class PrintError extends Application
public static void main(String args[])
launch(args);
public void start(Stage stage) throws PrintException
PrinterJob printerJob = PrinterJob.createPrinterJob();
printerJob.showPrintDialog(stage);
PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
printRequestAttributeSet.add(new Copies(printerJob.getJobSettings().getCopies()));
printRequestAttributeSet.add(new JobName("test", Locale.getDefault()));
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc mydoc = new SimpleDoc(ClassLoader.class.getResourceAsStream("/should-be-printed.txt"), flavor, null);
DocPrintJob job = getPrintService(printerJob.getPrinter().getName()).createPrintJob();
job.print(mydoc, printRequestAttributeSet);
private PrintService getPrintService(String name)
for (PrintService printService : java.awt.print.PrinterJob.lookupPrintServices())
if (name.equalsIgnoreCase(printService.getName()))
return printService;
return null;
此示例是在 JavaFx 8 中创建的,并在 Windows 7 的 Java build 1.8.0-b132 中运行。 我还在github创建了一个简单的项目
【问题讨论】:
您要使用哪些 PDF 打印机?另外,您能否发布一个生成的文本报告的示例以及 Ubuntu 创建的内容? JavaFX 有一个printing framework。由于您的应用程序是在 JavaFX 中创建的,我认为您应该尝试使用该框架。 显示如何使用打印框架的示例仅显示如何打印应用程序(节点)的内容。这个框架可以打印文件吗? 【参考方案1】:来自documentation:
推荐的 DocFlavors
Java Print Service API 没有定义任何强制支持的 DocFlavor。 …
当你有一个PrintService
实例时,你可以使用getSupportedDocFlavors()
方法来找出它支持的风格。
当您发现列表中没有DocFlavor. INPUT_STREAM. TEXT_PLAIN_…
口味时,使用AUTOSENSE
无济于事,因为这仅表示“最佳猜测”,PrintService
不太可能猜测类型它不支持,相反,数据更有可能被误解为它支持的格式之一。
在我的 Windows 机器上,提供的 PrintService
s 都不支持打印纯文本……
【讨论】:
我没有注意到windows的pdf打印机不能直接打印文本文件。【参考方案2】:如果其他人遇到类似问题(在 Windows 7 中打印空白,但在我的情况下在 Windows 10 中工作),但 DocFlavor 设置正确(即,所选打印服务支持的)...
我能够通过将 JRE 从 32 位 8u101 更新到 64 位 8u121 来解决我的问题。
【讨论】:
以上是关于无法在 Windows 7 中使用 Java 8 打印文本文件的主要内容,如果未能解决你的问题,请参考以下文章
仅在 Windows 10 中,Java Keyevent 不起作用..在 Windows 7 和 8 中它运行良好..我不知道为啥
在 Tomcat 6-Java 7/8 中运行 Tomcat 6-Java 6 WebApps
无法使用PhoneGap在Windows Phone 7中调用Ajax方法
无法使用 pacifist 在带有 Java 1.7.0.45 的 Mac OS X 10.6.8 上运行线程化的 java jar 文件