2016-09-27 261 views
0

我有一個使用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"); 
     } 
    } 
} 

} 

回答

0

雖然下面並沒有具體解決這個問題,但下面是我發現的以及我如何解決這個問題。

在其上安裝了Linux Ubuntu 16.04的不同系統上,我安裝了相同的打印機驅動程序,然後在那裏運行應用程序。它正常工作,按預期打印到紙張上。

解決方法是在有問題的系統上清除Linux Mint 17.3並在其上安裝Ubuntu 16.04。然後我安裝了打印機驅動程序並測試了應用程序。它的工作原理應該如此。所以,對我來說,這個問題已經解決了,我正在從中繼續。

謝謝。