我需要打印PDF文件使用Java打印API。我知道如果我需要打印打印机本身不支持的格式,我需要使用2DGraphics等。但是如果打印机本身就支持格式,那么我就不需要使用2DGraphics了。我只需要发送要打印的文件:
Doc myDoc = new SimpleDoc(stream, myFormat, dset);
...
job.print(myDoc, aset);因此,当我使用Java print API打印时,我得到了exception:sun.print.PrintJobFlavorException: invalid flavor,但是当我使用Adobe Reader打印时,所有打印都正常。为什么会这样呢?
发布于 2016-01-30 21:40:28
显然,PDF不是本机格式。它很可能会涵盖PostScript,而且它的古老的根源是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应用程序安装。
https://stackoverflow.com/questions/12035962
复制相似问题