4

我需要使用 Java 打印 API 打印 PDF 文件。我知道如果我需要打印打印机本机不支持的格式,我需要使用 2DGraphics 等。但是如果打印机本机支持格式,所以我不需要使用 2DGraphics。我只需要发送文件即可打印:

Doc myDoc = new SimpleDoc(stream, myFormat, dset);
...
job.print(myDoc, aset);

因此,当我使用 Java 打印 API 打印时出现异常:sun.print.PrintJobFlavorException: invalid flavor 但是当我使用 Adob​​e Reader 打印时,所有打印结果都很好。为什么这样?

4

1 回答 1

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 应用程序。

于 2016-01-30T13:40:28.430 回答