java 生成pdf打印_java html生成PDF,并打印

本文介绍了一种使用Java生成PDF的方法,并提供了将生成的PDF文件进行打印的功能实现。通过使用PD4ML库来渲染HTML为PDF,并设置了页脚样式及字体。此外,还实现了查找打印服务并发送PDF文件进行打印的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

importjava.io.File;importjava.io.FileOutputStream;importorg.zefer.pd4ml.PD4Constants;importorg.zefer.pd4ml.PD4ML;importorg.zefer.pd4ml.PD4PageMark;importjavax.print.Doc;importjavax.print.DocFlavor;importjavax.print.DocPrintJob;importjavax.print.PrintService;importjavax.print.PrintServiceLookup;importjavax.print.SimpleDoc;importjavax.print.attribute.DocAttributeSet;importjavax.print.attribute.HashDocAttributeSet;importjavax.print.attribute.HashPrintRequestAttributeSet;public void createPDF(String printHtml, File pdffile) throwsInvalidParameterException, IOException{

StringBuffer html= newStringBuffer();

html.append("

.append(" .pageBreak{page-break-after: always; }")

.append("");

html.append(printHtml);

html.append("");

StringReader strReader= newStringReader(getHtml(html).toString());

FileOutputStream fos= newFileOutputStream(pdffile);

PD4ML pd4ml= newPD4ML();

pd4ml.setPageInsets(new Insets(5, 5, 5, 5));

pd4ml.setHtmlWidth(700);

pd4ml.setPageSize(PD4Constants.A4);

pd4ml.useTTF("file:"+System.getProperty("ofbiz.home")+"/hot-deploy/heluoexam/webapp/exam/fonts", true);

PD4PageMark footer= newPD4PageMark();

footer.setHtmlTemplate("

第 $[page] 页 共 $[total] 页
");

footer.setAreaHeight(-1);

pd4ml.setPageFooter(footer);

pd4ml.render(strReader, fos);

}publicStringBuffer getHtml(Object in){

StringBuffer html= newStringBuffer();

html.append("")

.append("

")

.append("")

.append("

.append("BODY {PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.5; FONT-STYLE: normal; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #333; FONT-SIZE: 13px; FONT-WEIGHT: normal; PADDING-TOP: 0px}")

.append("table{border:1px solid #000;}")

.append("table td{border:1px solid #000;}")

.append("")

.append("")

.append("

");

html.append(in);

html.append("");returnhtml;

}private voidPrintPDF(File pdFile) {//构建打印请求属性集

HashPrintRequestAttributeSet pras = newHashPrintRequestAttributeSet();//设置打印格式,如未确定类型,选择autosense

DocFlavor flavor =DocFlavor.INPUT_STREAM.AUTOSENSE;//查找所有的可用的打印服务//PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);//定位默认的打印服务

PrintService defaultService =PrintServiceLookup.lookupDefaultPrintService();//显示打印对话框//PrintService service = ServiceUI.printDialog(null, 200, 200, printService,defaultService, flavor, pras);

if(defaultService != null){try{

DocPrintJob job= defaultService.createPrintJob();//创建打印作业

FileInputStream fis = new FileInputStream(pdFile);//构造待打印的文件流

DocAttributeSet das = newHashDocAttributeSet();

Doc doc= newSimpleDoc(fis, flavor, das);

job.print(doc, pras);

}catch(Exception e){

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值