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 を使用して印刷すると、すべて正常に印刷されます。なんでそうなの?

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 に答える