7

一部のプリンターでは、何らかの理由で、Java JVM (Java 7) を介して印刷するときに、デフォルト設定のように見える印刷出力が自動的に拡大されます。これは古いプリンターで発生しているようで、かなりまれですが、複数のプリンター モデルで発生しています。また、ドライバーをアップグレードしても問題は解決しません。

このソフトウェアは JFreeReport (クラシック エンジン) ライブラリを使用しており、ライブラリを使用して PDF としてエクスポートする場合、すべてが優れています。また、ライブラリを使用した印刷プレビューも完璧です。ただし、印刷に関しては、これは非常に少数のプリンターでのみ行われるため、印刷出力が拡大されます。それらは拡大されていませんが、フォントがはるかに大きく、スペースが不適切であるため、互いに重なっています。

JDK 6 を使用するこれらの同じプリンターは正常に動作するようです。どうやら、私はまだ問題を切り分けようとしています。私の考えでは、これらのプリンターは Java 7 を正しくサポートしていない可能性があります。

更新: JDK 7u21 にいくつかの問題があることを示していると思われるこのスレッドを見つけました。リリースノートには、これに対処するものは何もありませんでした。さらに、同様のバグ レポートの別の例を次に示します。

Update2:興味のある方のために、この問題についての詳細と私が発見したことを含む「 Printing is Broken on Mac OS X with Java 7」というブログ記事を書きました。

4

3 に答える 3

2

これは悲しいことに既知のバグです。いくつかの回避策がありますが(リンクに記載されている対称的な印刷解像度、バッファリングされた画像に変換してから印刷する)、まだ修正を認識していません。

于 2013-05-17T22:50:43.483 に答える
0

これは既知のバグです。PDF 印刷の回避策を使用したくない場合は、次の回答を確認してください。

https://stackoverflow.com/a/17345102/456837

于 2013-07-11T16:31:51.693 に答える
0

どうやら解決策はないようです。問題は、このバグ レポートおよびこのバグ レポートで報告されているように、JVM によって設定されたフォント属性が Mac OS によって無視されることです。

唯一の回避策は、一時ファイルを作成し、次を使用して印刷することです。

try
{
    Process process = Runtime.getRuntime().exec(new String[]{"lp", tempFileFullPath});
    process.waitFor();
} catch (Exception e) {
    // error handling
}

もちろん、これは、GUI アプリケーションがあるかどうかに応じて、スレッドまたは SwingUtils を介して起動できますが、現時点で可能な唯一の方法です。

于 2013-05-30T17:31:00.060 に答える