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