我需要使用Java打印API打印PDF文件。据我所知,如果我需要打印本机不支持的格式,我需要使用2DGraphics等。但如果打印机本身支持格式,那么我不需要使用2DGraphics。我只需要发送文件打印:
Doc myDoc = new SimpleDoc(stream, myFormat, dset);
...
job.print(myDoc, aset);
因此,当我使用Java print API进行打印时,我会遇到异常:sun.print.PrintJobFlavorException: invalid flavor
但是当我使用Adobe Reader打印时,所有打印都是FINE。为什么这样?
答案 0 :(得分:0)
显然PDF不是原生格式。很可能会覆盖PostScript,而PDF在PostScript中有其古老的根源。所以可能存在误解。
您可以让PDF注册申请表(Adobe Reader?)打印(或打开)PDF文件。这几乎是一个单行。
public static void print(File file) {
if (!Desktop.isDesktopSupported()) {
throw new IllegalStateException(
"Must not be run in headless server mode.");
}
try {
Desktop.getDesktop().print(file);
} catch (UnsupportedOperationException e) {
throw new IllegalStateException(
"Please install a PDF reader.");
}
}
先决条件是必须安装PDF应用程序。