java jasperprint,如何将JasperPrint直接打印到打印机?

I use Java to create report with JasperReports. What i want to do is that user be able to print directly, without print dialog.

I create JasperPrint and I know name and model of my printer.

I have also looked in the sample here but could not figure out how.

I use Java 1.7 and latest JasperReports library.

Does anyone know how to do it?

public class PrintApp {

public static void print() {

JasperPrint jasperPrint = getJasperPrint();

String printername = AllPrinter.getDepartmentPrinter("Admin");

// where should i introduce my printer name to jasperreports?

JasperPrintManager.printReport(jasperPrint, false);

}

private static JasperPrint getJasperPrint() {

return JasperPrinterCreator.getJasperprint();

}

}

解决方案

I solved it as below, hopefully it helps someone else.

public class PrintApp {

public static void print() {

JasperPrint jasperPrint = getJasperPrint();

String selectedPrinter = AllPrinter.getDepartmentPrinter("Admin");

PrinterJob printerJob = PrinterJob.getPrinterJob();

PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);

PrintService selectedService = null;

if(services.length != 0 || services != null)

{

for(PrintService service : services){

String existingPrinter = service.getName().toLowerCase();

if(existingPrinter.equals(selectedPrinter))

{

selectedService = service;

break;

}

}

if(selectedService != null)

{

printerJob.setPrintService(selectedService);

boolean printSucceed = JasperPrintManager.printReport(mainPrint, false);

}

}

private static JasperPrint getJasperPrint() {

return JasperPrinterCreator.getJasperprint();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java调用打印机打印入库单的具体实现方式需要根据你所使用的打印机打印模板来确定。以下是一般的实现步骤: 1. 创建入库单对象,包含所需的入库信息。 2. 根据入库单对象填充打印模板,生成打印数据。 3. 使用JasperReports或其他报表工具将打印数据生成为可打印的格式。 4. 使用Java打印库将打印数据发送到打印机并进行打印。 以下是一个简单的示例代码: ```java import java.io.File; import java.util.HashMap; import java.util.Map; import javax.print.PrintService; import javax.print.PrintServiceLookup; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.util.JRLoader; public class PrintInvoice { public static void main(String[] args) throws Exception { // Step 1: create invoice object Invoice invoice = new Invoice("INV-1234", "John Doe", "2021-01-01", 1000.0); // Step 2: fill invoice data into print template Map<String, Object> params = new HashMap<>(); params.put("invoice", invoice); File templateFile = new File("template/invoice_template.jasper"); JasperReport report = (JasperReport) JRLoader.loadObject(templateFile); JasperPrint print = JasperFillManager.fillReport(report, params); // Step 3: print invoice PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null); if (services.length > 0) { PrintService printService = services[0]; print.setPrinterName(printService.getName()); JasperPrintManager.printReport(print, false); } } } class Invoice { private String number; private String customerName; private String date; private double amount; public Invoice(String number, String customerName, String date, double amount) { this.number = number; this.customerName = customerName; this.date = date; this.amount = amount; } public String getNumber() { return number; } public String getCustomerName() { return customerName; } public String getDate() { return date; } public double getAmount() { return amount; } } ``` 这个示例代码包含了以下步骤: 1. 创建入库单对象。 2. 根据入库单对象填充打印模板。 3. 使用JasperReports将打印数据生成为可打印的格式。 4. 使用Java打印库获取可用打印机列表并选择第一个打印机,将打印数据发送到打印机并进行打印。 注意:在运行这个示例代码的时候,需要将打印模板的路径和打印机的名称替换为实际的路径和名称。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值