1.把html转pdf,首先必须要解决中文显示问题,CSS样式问题以及可能的JS问题,先上例子,自己去体会。

2.先去下载simsun.ttc字体;

2.demo.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF­8"/>
  5. <title>Title</title>
  6. <style>
  7. .color {
  8. color: green;
  9. }
  10.  
  11. .pos {
  12. position: absolute;
  13. left: 200px;
  14. top: 5px;
  15. width: 200px;
  16. font­size: 10px;
  17. }
  18. </style>
  19. </head>
  20. <body style="font-family: SimSun">
  21. <img src="logo.png" width="600px" />
  22. <div class="color pos">
  23. hello,${name};
  24. </div>
  25. </body>
  26. </html>

3.java实现转换代码

  1. package com.ra.truck.createpdf;
  2.  
  3. import com.itextpdf.text.pdf.BaseFont;
  4. import com.lowagie.text.*;
  5. import com.lowagie.text.Font;
  6. import com.lowagie.text.Rectangle;
  7. import com.lowagie.text.pdf.PdfWriter;
  8. import freemarker.template.Configuration;
  9. import freemarker.template.Template;
  10. import org.xhtmlrenderer.pdf.ITextFontResolver;
  11. import org.xhtmlrenderer.pdf.ITextRenderer;
  12.  
  13. import java.awt.*;
  14. import java.io.*;
  15. import java.util.HashMap;
  16. import java.util.Map;
  17.  
  18. /**
  19. * @Auther: lanhao
  20. * @Date: 2018/8/7 11:46
  21. * @Description:
  22. */
  23. public class JavaToPdfHtmlFreeMarkerFS {
  24. private static final String DEST ="../HelloWorld_CN_HTML_FREEMARKER_FS_index.pdf";
  25. private static final String HTML = "demo.html";
  26. private static final String FONT = "simsun.ttc";private static final String LOGO_PATH ="file:/"+PathUtil.getCurrentPath()+"/"+"demo448"+".png";
  27. private static Configuration freemarkerCfg=null;
  28. static {
  29. freemarkerCfg =new Configuration();
  30. //freemarker的模板目录
  31. try {
  32. freemarkerCfg.setDirectoryForTemplateLoading(new File(PathUtil.getCurrentPath()));
  33. } catch (IOException e) {
  34. e.printStackTrace();
  35. }
  36. }
  37. public static void main(String[] args){
  38. String os=System.getProperty("os.name");
  39. System.out.println(os);
  40. Map<String,Object> data = new HashMap<>();
  41. data.put("name","lan浩");
  42. String content =freeMarkerRender(data,HTML);
  43. createPdf(content,DEST);
  44. }
  45.  
  46. /**
  47. * freemarker渲染html
  48. */
  49. public static String freeMarkerRender(Map<String, Object> data,String htmlTmp) {
  50. Writer out = new StringWriter();
  51. try {
  52. // 获取模板,并设置编码方式
  53. Template template = freemarkerCfg.getTemplate(htmlTmp);
  54. template.setEncoding("UTF­8");
  55. // 合并数据模型与模板
  56. template.process(data, out); //将合并后的数据和模板写入到流中,这里使用的字符流
  57. out.flush();
  58. return out.toString();
  59. } catch (Exception e) {
  60. e.printStackTrace();
  61. } finally {
  62. try {
  63. out.close();
  64. } catch (IOException ex) {
  65. ex.printStackTrace();
  66. }
  67. }
  68. return null;
  69. }
  70.  
  71. private static void createPdf(String content,String dest) {
  72. try {
  73. ITextRenderer render = new ITextRenderer();
  74. //解决中文不显式问题
  75. ITextFontResolver fontResolver = render.getFontResolver();
  76. fontResolver.addFont(FONT,BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
  77. // 解析html生成pdf
  78. render.setDocumentFromString(content);
  79. //解决图片相对路径的问题
  80. render.getSharedContext().setBaseURL(LOGO_PATH);
  81. render.layout();
  82. render.createPDF(new FileOutputStream(dest));
  83. }catch (Exception e) {
  84. e.printStackTrace();
  85. }
  86. }
  87. }

注:引用的文件全部放在项目的resource根目录下

使用freemarker和itext把html转pdf的更多相关文章

  1. iText框架(生成pdf文档)

    1.创建一个itext的简单示例 a.导包(pom.xml文件) <dependencies> <dependency> <groupId>com.lowagie& ...

  2. 用itext合并多个pdf文件【转】【补】

    java代码 package c; import java.io.FileOutputStream; import java.io.IOException; import java.util.Arra ...

  3. Java使用IText(VM模版)导出PDF

    Java使用IText(VM模版)导出PDF: public String createPDF(ProjectManageBase projectManageBase) { Map map = new ...

  4. wkhtmltopdf+itext实现html生成pdf文件的打印下载(适用于linux及windows)

    目中遇到个根据html转Java的功能,在java中我们itext可以快速的实现pdf打印下载的功能,在itext中我们一般有以下三中方式实现 配置pdf模板,通过Adobe Acrobat 来设置域 ...

  5. 【转】Java通过IText导出word和pdf

    原帖地址:http://blog.csdn.net/zwx19921215/article/details/34439851 最近做的项目中需要用到把Highcharts图表导出word和pdf的功能 ...

  6. 利用itext将html转为pdf

    亲测代码没有问题,需要注意细节已经标注:需要jar包:iText-2.0.8.jar:core-renderer-R8.jar: core-renderer-R8.jar下载地址:http://cen ...

  7. itext转html为pdf遇到的问题

    记录一下使用itext将html文件转为pdf文件遇到的一些问题 1.中文不显示 原因:itext默认不支持中文 解决方法:引入中文字体 需要注意的是在java代码中设置好中文字体后,还需要在html ...

  8. Java使用IText(VM模版)导出PDF,IText导出word(二)

    ===============action=========================== //退款导出word    public void exportWordTk() throws IOE ...

  9. 在spring boot 中使用itext和itextrender生成pdf文件

    转载请注明出处 https://www.cnblogs.com/majianming/p/9539376.html 项目中需要对订单生成pdf文件,在第一版本其实已经有了比较满意的pdf文档,但是还是 ...

随机推荐

  1. 框架源码系列十一:事务管理(Spring事务管理的特点、事务概念学习、Spring事务使用学习、Spring事务管理API学习、Spring事务源码学习)

    一.Spring事务管理的特点 Spring框架为事务管理提供一套统一的抽象,带来的好处有:1. 跨不同事务API的统一的编程模型,无论你使用的是jdbc.jta.jpa.hibernate.2. 支 ...

  2. 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102

    1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScale+  MPSoC架构 Xilinx新一代Zynq针对控制.图像和网络应用推出了差异化的产品系,这 ...

  3. Datagrip连接SQLServer Connecting DataGrip to MS SQL Server

    Connecting DataGrip to MS SQL Server Posted on June 21, 2016 by Maksim Sobolevskiy Some specific nee ...

  4. 【中间件安全】WebSphere安全加固规范

    1. 适用情况 适用于使用WebSphere进行部署的Web网站. 2. 技能要求 熟悉WebSphere安装部署,熟悉WebSphere常见漏洞利用方式,并能针对站点使用WebSphere进行安全加 ...

  5. Elasticsearch Java API的基本使用

    说明 在明确了ES的基本概念和使用方法后,我们来学习如何使用ES的Java API. 本文假设你已经对ES的基本概念已经有了一个比较全面的认识. 客户端 你可以用Java客户端做很多事情: 执行标准的 ...

  6. JS 详解对象的继承

    在学习这篇博文前,请先移步我的另外一篇博文:JS 一张图理解prototype.proto和constructor的关系,先弄清楚“原型链”,这样对于理解继承会非常有效. 注意:博文中提到的“属性”, ...

  7. 【消灭代办】第5周 - null拷贝,input自适应,进度条加载,颜色随机值

    2018.12.10 代办一:javascript中js怎么拷贝null的值 null属于简单类型的数值,直接进行拷贝即可: 2018.12.11 代办二:怎么让input自适应宽度? 这样是写下代办 ...

  8. Ubuntu系统安装nginx

    1.首先查看linux系统 cat /proc/version Linux version 4.9.59-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (cr ...

  9. hibernate09--连接查询

    创建实体类 package cn.bdqn.bean; import java.util.ArrayList; import java.util.Date; import java.util.List ...

  10. 为 git设置代理

    普通设置 git config --global http.proxy 'socks5://127.0.0.1:1080'git config --global https.proxy 'socks5 ...