Jasper Report在点阵打印机中打印时字体重叠

时间:2017-04-02 11:14:21

标签: java jasper-reports

我创建了一个jasper报告(Invoice)文件并通过JButton运行它。当我点击按钮时,它按预期显示预览但是当我点击Jasper Viewer中的打印按钮以使用点阵打印机(TVS 240星)打印时,页面上的字体(硬拷贝)彼此重叠并且尺寸也改变了。

我该如何解决这个问题?

(页面大小5英寸宽6英寸高/字体Arial Unicode MS,9)

public void bill(){
    if(textField_10.getText().equals(""))
            {
        JOptionPane.showMessageDialog(null,"Enter Bill no. !","Invoice", getDefaultCloseOperation());
        textField_10.grabFocus();
    }
    else{
    try{
        String para=textField_7.getText();
        String para1=textField_8.getText();
        String para2=textField_9.getText();
        String para3=textField_10.getText();
        String sourceName="/DBcon/new.jrxml";
        //String sourceName="/DBcon/Invoice.jrxml";
       java.io.InputStream in=null;

     HashMap<String, Object> hm=new HashMap<String,Object>();
     hm.put("Retailer_Name",para);  //jasper report parameter passing
     hm.put("Address",para1);
     hm.put("Contact",para2);
     hm.put("Billno",para3);

     in=getClass().getResourceAsStream(sourceName);
    JasperReport jr=JasperCompileManager.compileReport(in);
    JasperPrint jp=JasperFillManager.fillReport(jr,hm,con);
    JasperViewer.viewReport(jp,false);
    // JasperPrintManager.printReport(jp,true);
     //JasperExportManager.exportReportToPdfFile(jp, destinationFile);
     Exporter exp = new JRDocxExporter();
     exp.setExporterInput(new SimpleExporterInput(jp));
     File exportReportFile = new File("C:\\Users\\Public\\Documents\\invoice.docx");
     exp.setExporterOutput(new SimpleOutputStreamExporterOutput(exportReportFile));

     exp.exportReport();        
}
    catch(Exception e){
        e.printStackTrace();
        JOptionPane.showMessageDialog(null,"Close previous invoice");
    }
    }
}

1 个答案:

答案 0 :(得分:1)

大多数点阵打印机都会出现此错误,您可以通过MS Word或PDF阅读器打印报告来解决此问题。

JasperPrint jpd = JasperFillManager.fillReport(jrd, para, db.mycon());
File f = new File("C:\\PrintTemp\\"); //create a folder in c drive
if (!f.exists()) {
    f.mkdir();
}
//delete previous files in the folder(this is not necessary)
for (File file : f.listFiles()) {
    if (!file.isDirectory()) {
        file.delete();
    }
}

File destFile = new File(f + "print.pdf");
JasperExportManager.exportReportToPdfFile(jpd, destFile);
//print the file
Desktop desktop = Desktop.getDesktop();
if (desktop.isSupported(Desktop.Action.PRINT)) {
    desktop.print(new File(destFile));
}

您的默认pdf阅读器将打开并通过默认打印机打印文件