2017-04-02 178 views
0

我创建了一个碧玉报告(发票)文件并通过JButton运行它。当我点击按钮时,它会按预期显示预览,但是当我点击Jasper Viewer中的打印按钮以使用点阵打印机(TVS 240 star)进行打印时,页面上的字体(硬拷贝)彼此重叠并且大小也发生了变化。Jasper报告字体在点阵打印机打印时重叠

我该如何解决这个问题?

(页面大小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"); 
    } 
    } 
} 
+0

蹊跷* JRXML *(报告的模板) –

回答

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阅读器会打开并打印通过默认的打印机打印文件