我创建了一个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");
}
}
}
答案 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阅读器将打开并通过默认打印机打印文件