Java.打印PDF。

4

我需要使用Java打印API打印PDF文件。我了解,如果我需要打印打印机本身不支持的格式,那么我需要使用2DGraphics等技术。但是,如果打印机本身支持该格式,那我就不需要使用2DGraphics了。我只需要简单地发送文件进行打印即可:

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

当我使用Java打印API打印时,出现异常:sun.print.PrintJobFlavorException: invalid flavor。但是当我使用Adobe Reader打印时,所有内容都能正常打印。为什么会这样呢?


你可以使用PdfRenderer,我使用它成功地打印了一个pdf文件。http://juixe.com/techknow/index.php/2008/01/17/print-a-pdf-document-in-java/ - likeToCode
@likeToCode 它有 bug。它需要 jbig2 解码器,但 jbig2 解码器非常 buggy(免费版本的,我没有尝试不免费版本(2.0))。 - WelcomeTo
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应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接