html模板转pdf
工具方法:public void createPdf(String htmlFilePath,SelectParamRequest paramRequest){ if(paramRequest.getProductNamr() == null || paramRequest.getClassificationName() == null){ System.out.println("有空值!!!"); return; } //2.读取对应文件位置的html模板 String htmlStr = PDFUtil.readHtmlFileByPath(htmlFilePath); //3.替换模板html中对应的元素 htmlStr = changeHtmlTemp (htmlStr, paramRequest); //4.由于jsoup转换html时不是按照xhtml格式,因此需要jtidy进行一次转换 htmlStr = PDFUtil.changeHtmlStrToXhtml(htmlStr); //5.生成对应路径下的pdf 生成pdf的路径,pdf名字 PDFUtil.createPDFFileByHtmlStrInPath (htmlStr, paramRequest.getPDFPath(),paramRequest.getPDFName());}
//2.读取对应文件位置的html模板
private static final String ENCODING="UTF-8"; public static String readHtmlFileByPath (String htmlFilePath) { System.out.println("读取的模板路径:"+ htmlFilePath); StringBuilder content = new StringBuilder (); String lineStr; InputStream fileInputStream = null; BufferedReader reader = null; try { //1.读取对应文件位置的html模板/static/temphtml/product.html/* fileInputStream = new FileInputStream("E:\\workspace\\mytest\\alibaba\\src\\main\\resources\\static\\temphtml\\product.html");*/ fileInputStream = PDFUtil.class.getResourceAsStream (htmlFilePath); if (fileInputStream==null){ System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!1"); } reader = new BufferedReader(new InputStreamReader(fileInputStream, ENCODING)); while ((lineStr = reader.readLine()) != null) { content.append (lineStr); content.append("\n"); } } catch (FileNotFoundException e) { throw new MyException("对应路径["+htmlFilePath+"]文件没找到",e.getMessage()); } catch (IOException e) { throw new MyException("读取对应路径["+htmlFilePath+"]文件错误",e.getMessage()); } finally { if (fileInputStream != null) { try { fileInputStream.close (); } catch (IOException e) { throw new MyException("关闭["+htmlFilePath+"]文件流异常",e.getMessage()); } } } return content.toString (); }
//3.替换模板html中对应的元素
public String changeHtmlTemp (String htmlStr,SelectParamRequest paramRequest) { Document doc = Jsoup.parse (htmlStr); Element fenleinameEle = doc.getElementById ("fenlei"); //对应html标签的id值 fenleinameEle.text (paramRequest.getClassificationName()); Element chanpinEle = doc.getElementById ("chanping"); chanpinEle.text(paramRequest.getProductNamr()); Element xinghaoEle = doc.getElementById ("xinghao"); xinghaoEle.text (paramRequest.getSpecifacationName()); return doc.html();}
public static String changeHtmlStrToXhtml(String htmlStr) { ByteArrayInputStream inStream = new ByteArrayInputStream(htmlStr.getBytes()); ByteArrayOutputStream tidyOutStream = new ByteArrayOutputStream(); Tidy tidy = new Tidy(); tidy.setInputEncoding(ENCODING); tidy.setQuiet(true); tidy.setOutputEncoding(ENCODING); tidy.setShowWarnings(false); //不显示警告信息 tidy.setIndentContent(true);// tidy.setSmartIndent(true); tidy.setIndentAttributes(false); tidy.setWraplen(1024); //多长换行 //输出为xhtml tidy.setXHTML(true); tidy.setErrout(new PrintWriter(System.out)); tidy.parse(inStream, tidyOutStream); return tidyOutStream.toString();}
public static void createPDFFileByHtmlStrInPath (String htmlStr, String storagePath,String pdfName){ FileOutputStream fileOutputStream = null; try { File path = new File (storagePath); File file = new File(path,pdfName); if(! path.exists()) { path.mkdirs(); } if ( !file.exists()) { if(!file.createNewFile ()){ throw new MyException("对应地址["+storagePath+"]文件创建失败"); }; } fileOutputStream = new FileOutputStream (file); ITextRenderer renderer = new ITextRenderer (); // 解决中文支持问题 ITextFontResolver resolver = renderer.getFontResolver (); resolver.addFont ("/static/font/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); resolver.addFont ("/static/font/simhei.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); resolver.addFont ("/static/font/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); renderer.setDocumentFromString (htmlStr); // 解决图片的相对路径问题,图片路径必须以file开头// renderer.getSharedContext().setBaseURL("file:/"); renderer.layout (); renderer.createPDF (fileOutputStream); } catch (IOException e) { throw new MyException("向["+storagePath+"]路径生成pdf流错误",e.getMessage()); } catch (DocumentException e) { throw new MyException("向["+storagePath+"]路径生成pdf文件流异常",e.getMessage()); } finally { if (fileOutputStream != null) { try { fileOutputStream.close (); } catch (IOException e) { throw new MyException("向["+storagePath+"]路径生成pdfio关闭异常",e.getMessage()); } } } } html模板:注意要设置
<style type="text/css"> .pdfBody{ margin-left: 2em; font-size: 1.2em; font-family: SimSun; color: #666666; margin-top: 3em; }</style>
<body > <div class="pdfBody"> 分类:<input type="text" id="fenlei"><br> 产品:<input type="text" id="chanping"><br> 型号:<input type="text" id="xinghao"><br> <div>添加型号tjsx</div> </div> </body>
测试:
@RequestMapping("/createPdf.json")@ResponseBodypublic void createPdf(){ SelectParamRequest paramRequest = new SelectParamRequest(); paramRequest.setClassificationName("服装"); paramRequest.setProductNamr("童装"); paramRequest.setSpecifacationName("米老鼠"); paramRequest = initReceiptInfo(paramRequest); try { productService.createPdf("/static/temphtml/product.html",paramRequest); } catch (Exception e) { e.printStackTrace(); System.out.println(e.getCause().getLocalizedMessage()); }}效果图:
转载于:https://www.cnblogs.com/it-yansx666/p/9257394.html
html模板转pdf相关推荐
- java根据模板导出pdf,java开发面试笔试题
我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...
- 使用com.aspose.words将word模板转为PDF乱码解决方案(window下正常)
使用com.aspose.words将word模板转为PDF乱码解决方案(window下正常) 参考文章: (1)使用com.aspose.words将word模板转为PDF乱码解决方案(window ...
- PdfSharp -- 根据PDF模板导出PDF
PdfSharp:v1.50.5147,.NET Framework:v4.5.1 一.PDF模板 在开始前,我觉得有必要简单说一下PDF模板 制作PDF模板的工具有很多,随便找一款就行(我这里用迅捷 ...
- freemarker模板生成pdf文件
文章目录 1.pom依赖 2.ftl模板以及宋体文件 2.1.文件路径 2.2.ftl文件模板(test.ftl) 3.controller生成pdf文件 1.pom依赖 <!--freemar ...
- java 制作pdf模板,Java-pdf模板制作流程-使用pdf 模板生成pdf文件
Java 使用pdf 模板生成pdf文件 --制作流程 1. 使用工具 adobe acrobat dc.word 2015 2. 使用 word 繪制一個 3*5 的表格並保存, ...
- java 模板生成PDF文件 复选框勾选
java 模板生成PDF文件 复选框勾选 // pdf填充时要有第三个参数s.setField("A", On, true);
- java pdf工具类_Java PDF工具类(一)| 使用 itextpdf 根据PDF模板生成PDF(文字和图片)...
Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片) 相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文 ...
- Java使用Itext5与html模板生成pdf并支持下载
Java使用Itext5与html模板生成pdf 文章目录 Java使用Itext5与html模板生成pdf 前言 一.引入依赖 二.相关使用说明 1.工具类 2.模板配置 3.模板的抽象类(定义了相 ...
- itext使用模板生成pdf文件
用pdf模板生成pdf文档很简单,首先需要手动做个pdf模板,上面有很多的类似html里的text域的东西, 给他们起好名字,在程序里填充就可以了.虽然由于不会做模板(实际上由于短时间无法去熟悉使用A ...
- itext模板生成pdf 后添加动态表格
需求:pdf较为复杂部分利用模板生成,但是后续还需要补充动态数据表格 模板生成参考 itextpdf 利用模板生成pdf 下载_音乐土豆的博客-CSDN博客 注意 1.读取了模板写入数据之后再用doc ...
最新文章
- 免费学python的网站-免费学习Python编程的3个优秀的网站资源
- Windows服务的程序方面的资料
- Chrome OS 设备或将允许用户自行选择 Linux 发行版
- Codeforces Round #296 (Div. 1) D. Fuzzy Search FFT匹配字符串
- Android逆向笔记-IDA Pro动态调试Android程序(真机)
- (1)JavaScript入门
- 杉德支付php代码实现_php实现微信支付的代码
- Confluence 6 创建一个用户宏
- PHP —— 识别运算符实现逻辑比较
- NX/UG二次开发—装配—抑制的组件怎么获取原型
- 这将是你看到过最全的pdf预览解决方案
- 三款适用于企业建站的CMS建站系统
- 巨潮网怎么下载年报_如何下载上市公司的年度报告
- BK3432和BK3431Q芯片开发问题
- 【QT数字图像处理】(三)QSlider滑块学习
- WKWebView 使用及注意点(keng)
- C语言:判断两数是否互质
- jxl 统计图_cad的图形为什么会自动重叠成两层图形
- 2020中国最佳创新公司50榜单正式发布,哔哩哔哩、理想汽车等上榜
- 下载 https://github.com/android 上的全部源代码