0
votes

I have created a jasper report(Invoice) file and run it through JButton. when I click on button it shows preview as expected but when I click print button in Jasper Viewer to print with a dot matrix printer (TVS 240 star) the font on the page (hard copy) is overlapping to each other and size also changed.

How can I solve this problem?

(page size 5 inch width 6 inch height/font 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
Something wrong with jrxml (report's template)Alex K

1 Answers

1
votes

This error happens in most dot matrix printers and you can overcome this by printing the report through MS word or PDF reader.

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));
}

Your default pdf reader will open and print the file through default printer