我在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。
我还使用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 :(得分:0)
虽然以下内容并未专门解决此问题,但以下是我发现的内容以及我如何解决此问题。
在另一个上面有Linux Ubuntu 16.04的系统上,我安装了相同的打印机驱动程序,然后在那里运行了应用程序。它工作正常,按预期打印到纸张上。
解决方法是在出现问题的系统上删除Linux Mint 17.3并在其上安装Ubuntu 16.04。然后我安装了打印机驱动程序并测试了应用程序。它按预期工作。所以,对我来说,问题已经解决了,我正在继续前进。
感谢。