我有一個使用Java 8(1.8.0_45)打印到打印機的Mac(OS X,el capitan)上開發的應用程序。它完美地打印到打印機上,在紙上繪製一個很好的圓圈(橢圓形)。但是,我已將該應用程序移至Linux Mint系統(版本17.3,Mate),並生成(彈出)空白頁面。 (Brother MFC-J6510DW)使用相同的網絡打印機。我已經在Linux系統上安裝了適當的驅動程序,並且可以在文本編輯器中打印出來,或者發送測試頁。在Linux系統上使用Java 7(1.7.0_111)。我在Mac和Linux系統上使用Eclipse作爲我的IDE。Java Linux從PrinterJob打印空白頁
我也成功地使用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");
}
}
}
}