私は、Mac(OS X、el capitan)上でJava 8(1.8.0_45)を使ってプリンタに印刷するアプリケーションを開発しました。それは、紙に素晴らしい円(楕円形)を描く、プリンタに完全によく印刷します。しかし、私はLinux Mintシステム(バージョン17.3、Mate)にアプリを移動し、空のページを生成(取り出し)します。両者で同じネットワークプリンタが使用されています(Brother MFC-J6510DW)。私はLinuxシステムに適切なドライバをインストールしており、テキストエディタやテストページの送信からうまく印刷できます。 Linuxシステムでは、Java 7が使用されます(1.7.0_111)。私はMacとLinuxシステムの両方でEclipseをIDEとして使用しています。PrinterJobからJavaの空白の印刷ページ
私はまた、Macでアプリを使ってテキストを正常に印刷しましたが、Linuxシステムのプリンタから空白のページが出てきました。私はMacとLinuxの間のフォントの問題を解消するために楕円形を試しました。
私はすでにプリンタサービスをチェックするためのコードを追加しており、Linuxシステム上でプリンタを正しく検出しています。 job.printDialogのダイアログボックスが表示されます(Macシステムと同様)。興味深いことに、Linuxシステムで表示されるダイアログボックスは、テキストエディタから印刷するときにLinuxシステムに表示されるダイアログボックスの簡略版です。しかしそれでも、これは便利なダイアログボックスで、ファイルに印刷することもできます(空のイメージも生成されます)。
私はオンラインで回答を検索しましたが、この問題と関連するものは何も見つかりませんでした。ありがとう!
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.*;
public class PrintSomething implements Printable, ActionListener {
public PrintSomething()
{
}
public int print(Graphics g, PageFormat pf, int page) throws PrinterException
{
System.out.println("ENTERING PRINT JOB. PAGE = " + page);
if (page > 0)
{
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
System.out.println("Drawing Oval PAGE = " + page);
g2d.drawOval(50, 200, 50, 50);
// g.drawString(“Hello World", 250, 50);
return PAGE_EXISTS;
}
@Override
public void actionPerformed(ActionEvent e)
{
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(this);
boolean doPrint = job.printDialog();
if (doPrint)
{
try
{
System.out.println("STARTING PRINT JOB");
job.print();
}
catch (PrinterException ex)
{
System.out.println("ERROR in PRINT JOB");
}
}
}
}