- 浏览: 181030 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (134)
- java笔记 (25)
- Android开发 (3)
- Mybatis笔记 (1)
- oracle (9)
- javaScript (23)
- struts2 (2)
- jquery (6)
- java多线程 (6)
- 全文检索lucene (1)
- solr4.4 (5)
- solr4.9 (1)
- css 要点 (2)
- fmt格式化 (1)
- 百度地图 (1)
- 显示层jsp (2)
- ant (3)
- 脑袋放水 (2)
- 播放器 (1)
- log日志 (1)
- Spring (1)
- 设计模式 (2)
- httpservlet (1)
- seo (1)
- eclipse使用技巧 (1)
- 正则表达式 (2)
- 我的异常解决方案 (2)
- 集群服务器 (2)
- java网络编程 (3)
- Eclipse快捷键 (1)
- 图片和Base64互转 (1)
- maven (0)
- jsoup 网络爬虫 (1)
- 安全防范 (1)
- 非关系型数据库 (1)
- 在线工具 (1)
- HTML5学习 (1)
- Apache-Mina (1)
最新评论
-
wenjiao8204322:
不好意思说错了,是变量替换后,如果是英文和数字,是不换行的,如 ...
html 转换成pdf -
wenjiao8204322:
楼主你好,有问题、一直难以解决,我们项目上线后,就遗留在这就是 ...
html 转换成pdf -
jacking124:
scoreName 这个属性是做什么的!
jquery.raty-评级插件 -
高军威:
yixiandave 写道高军威 写道alvin198761 ...
Java中的五种实现方法【单例模式】 -
yixiandave:
高军威 写道alvin198761 写道53./** 54. ...
Java中的五种实现方法【单例模式】
解决需求:
1.字符串html代码转换成pdf文件
2.根据FreeMarker模板动态生成静态html文件
3.把静态html文件装换成pdf文件
4.解决html编写不够严谨规范的问题,自动转换为符合规范的格式
5.支持中文及换行
6.pdf文件打水印 - (html文件设置背景图片即可)
7.使用用户根据自己的需求改写jar包中的代码添加 页眉页脚,及当前第几页
注意:
使用jar包的版本,特定的jar包是经过改写而实现支持中文及换行问题,附件中给出的就是一组特定版本的jar包,能够解决以上需求
还是有点毛病:
加粗不管用,css样式和B标签都不管用这。。
参考了很多网上的文章:
http://swordshadow.iteye.com/blog/1983935#comments等等。。。
先来个效果图:
1.得到html的文本内容
2.String类型的html转换成pdf
连接数据库类文件
3.html静态文件生成pdf
4.利用freemark生成静态的html文件
core-renderer3.jar
htmlcleaner.jar
iText-2.0.8.jar
iTextAsian.jar
jtidy-r8-21122004.jar
mysql-connector-java-5.1.6-bin.jar
下面有测试项目
http://www.micmiu.com/opensource/expdoc/itext-xml-worker-cn/
1.字符串html代码转换成pdf文件
2.根据FreeMarker模板动态生成静态html文件
3.把静态html文件装换成pdf文件
4.解决html编写不够严谨规范的问题,自动转换为符合规范的格式
5.支持中文及换行
6.pdf文件打水印 - (html文件设置背景图片即可)
7.使用用户根据自己的需求改写jar包中的代码添加 页眉页脚,及当前第几页
注意:
使用jar包的版本,特定的jar包是经过改写而实现支持中文及换行问题,附件中给出的就是一组特定版本的jar包,能够解决以上需求
还是有点毛病:
加粗不管用,css样式和B标签都不管用这。。
参考了很多网上的文章:
http://swordshadow.iteye.com/blog/1983935#comments等等。。。
先来个效果图:
1.得到html的文本内容
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; /** * <ul> * <li>功能描述: 工具类 得到html内容</li> * </ul> * @author gjw */ public class GetHtmlContent{ /** * <ul> * <li>功能描述: 得到html内容</li> * </ul> * @param ****** * @param ****** * @return ****** * @author gjw */ public static String getHtmlContent(String tender_id,String invest_id) { try { String path = "./upload/44/445/"+tender_id+"/"+invest_id; File f = new File(path+"/ceshi.html"); if (f.exists()) { FileInputStream ism = new FileInputStream(f); InputStreamReader isr = new InputStreamReader(ism,"utf-8"); BufferedReader bs = new BufferedReader(isr); String info; info = bs.readLine(); String content = ""; while(info!=null){ content+=info; info = bs.readLine(); } return content; } return null; } catch (IOException e) { e.printStackTrace(); return null; } } }
2.String类型的html转换成pdf
import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.xml.parsers.ParserConfigurationException; import org.htmlcleaner.CleanerProperties; import org.htmlcleaner.HtmlCleaner; import org.htmlcleaner.PrettyXmlSerializer; import org.htmlcleaner.TagNode; import org.xhtmlrenderer.pdf.ITextFontResolver; import org.xhtmlrenderer.pdf.ITextRenderer; import org.xml.sax.SAXException; import LuceneDAO.BaseDAO; import com.lowagie.text.DocumentException; import com.lowagie.text.pdf.BaseFont; public class PdfRenderer { public static void main(String[] args) throws IOException, DocumentException, ParserConfigurationException, SAXException { // Create a buffer to hold the cleaned up HTML 将不严格的html编写方式转为严谨的html编码方式 ByteArrayOutputStream out = new ByteArrayOutputStream(); // Clean up the HTML to be well formed HtmlCleaner cleaner = new HtmlCleaner(); CleanerProperties props = cleaner.getProperties(); TagNode node = cleaner.clean(getcontext()); // Instead of writing to System.out we now write to the ByteArray buffer new PrettyXmlSerializer(props).writeXmlToStream(node, out); // Create the PDF ITextRenderer renderer = new ITextRenderer(); renderer.setDocumentFromString(new String(out.toByteArray())); //BaseFont fontResolver = renderer.getFontResolver(); ITextFontResolver fontResolver = renderer.getFontResolver(); //解决中文不显示问题 fontResolver.addFont("C:/Windows/Fonts/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //设置资源路径 如图片样式文件 //renderer.getSharedContext().setBaseURL("C:\\htmltopdf\\"); renderer.layout(); OutputStream outputStream = new FileOutputStream(".\\towork\\HTMLasPDF.pdf"); renderer.createPDF(outputStream); // Finishing up renderer.finishPDF(); out.flush(); out.close(); } public static String getcontext() { Connection con = null; PreparedStatement ps = null; ResultSet rs = null; String sql = "select * from post where fileid = 1"; BaseDAO baseDao = null; try{ baseDao = new BaseDAO(); con = baseDao.getConnection(); ps = con.prepareStatement(sql); rs = ps.executeQuery(); while(rs.next()){ return rs.getString("fdesc").toString(); } }catch(Exception e){ e.printStackTrace(); }finally{ try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } return""; } }
连接数据库类文件
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class BaseDAO { // 必须参数 public static final String DRIVER = "com.mysql.jdbc.Driver"; // 驱动名称 public static final String URL = "jdbc:mysql://localhost:3306/lucene"; // 数据库地址 public static final String DBNAME = "root"; // 用户名 public static final String PASSWORD = "tiger"; // 密码 /** * 获取数据库连接 * * @return con * @throws ClassNotFoundException * @throws SQLException */ public Connection getConnection() throws ClassNotFoundException, SQLException { Class.forName(DRIVER); Connection con = DriverManager.getConnection(URL, DBNAME, PASSWORD); return con; } }
3.html静态文件生成pdf
import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.xml.parsers.ParserConfigurationException; import org.htmlcleaner.CleanerProperties; import org.htmlcleaner.HtmlCleaner; import org.htmlcleaner.PrettyXmlSerializer; import org.htmlcleaner.TagNode; import org.xhtmlrenderer.pdf.ITextFontResolver; import org.xhtmlrenderer.pdf.ITextRenderer; import org.xml.sax.SAXException; import com.lowagie.text.DocumentException; import com.lowagie.text.pdf.BaseFont; public class PdfRenderer { public static void main(String[] args) throws IOException, DocumentException, ParserConfigurationException, SAXException { // Create a buffer to hold the cleaned up HTML将不严格的html编写方式转为严谨的html编码方式 ByteArrayOutputStream out = new ByteArrayOutputStream(); // Clean up the HTML to be well formed HtmlCleaner cleaner = new HtmlCleaner(); CleanerProperties props = cleaner.getProperties(); InputStream inputStream = new FileInputStream(".\\towork\\user.html"); TagNode node = cleaner.clean(inputStream, "utf-8"); // Instead of writing to System.out we now write to the ByteArray buffer new PrettyXmlSerializer(props).writeXmlToStream(node, out); // Create the PDF ITextRenderer renderer = new ITextRenderer(); renderer.setDocumentFromString(new String(out.toByteArray())); ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont("C:/Windows/Fonts/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); renderer.layout(); OutputStream outputStream = new FileOutputStream(".\\towork\\HTMLasPDF.pdf"); renderer.createPDF(outputStream); // Finishing up renderer.finishPDF(); out.flush(); out.close(); } }
4.利用freemark生成静态的html文件
//工具类 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.Map; import freemarker.template.Configuration; import freemarker.template.DefaultObjectWrapper; import freemarker.template.Template; import freemarker.template.TemplateException; /** * 生成 静态html文件的方法 * */ public class FreeMarkerUtil{ //templatePath模板文件存放路径 //templateName 模板文件名称 //filename 生成的文件名称 public static void analysisTemplate(String templatePath,String templateName,String fileName,Map<?,?>root){ try { Configuration config=new Configuration(); //设置要解析的模板所在的目录,并加载模板文件 config.setDirectoryForTemplateLoading(new File(templatePath)); //设置包装器,并将对象包装为数据模型 config.setObjectWrapper(new DefaultObjectWrapper()); //获取模板,并设置编码方式,这个编码必须要与页面中的编码格式一致 //否则会出现乱码 Template template=config.getTemplate(templateName,"UTF-8"); //合并数据模型与模板 FileOutputStream fos = new FileOutputStream(fileName); Writer out = new OutputStreamWriter(fos,"UTF-8"); template.process(root, out); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); }catch (TemplateException e) { e.printStackTrace(); } } }
//测试类 import java.util.HashMap; import java.util.Map; import com.seening.utils.SWResultList; import com.sinocec.model.xrwd.SWAreaFactory; /** * 测试ftl生成html文件 * */ public class ClientTest{ public static void main(String[] args){ User user=new User(); user.setUserName("李四"); user.setUserPassword("123"); Map<String,Object> root=new HashMap<String, Object>(); root.put("user", user);; String templatesPath="./WEB-INF/templet"; String templateFile="templet.ftl"; String htmlFile="./upload/templet/commontemplet.html"; FreeMarkerUtil.analysisTemplate(templatesPath,templateFile,htmlFile,root); } }
core-renderer3.jar
htmlcleaner.jar
iText-2.0.8.jar
iTextAsian.jar
jtidy-r8-21122004.jar
mysql-connector-java-5.1.6-bin.jar
下面有测试项目
http://www.micmiu.com/opensource/expdoc/itext-xml-worker-cn/
- htmlcleaner.jar (58.6 KB)
- 下载次数: 153
- jtidy-r8-21122004.jar (241.2 KB)
- 下载次数: 90
- core-renderer3.jar (1 MB)
- 下载次数: 141
- freemarker-2.3.15.jar (858.7 KB)
- 下载次数: 56
- iTextAsian.jar (321.6 KB)
- 下载次数: 96
- iText-2.0.8.jar (1.2 MB)
- 下载次数: 94
- ceshi.rar (7.8 MB)
- 下载次数: 138
评论
2 楼
wenjiao8204322
2015-12-16
不好意思说错了,是变量替换后,如果是英文和数字,是不换行的,如果是中文是换行的、,那请问英文和数字太长,该怎么解决换行问题,如果可以的话加下我qq 3227632996
1 楼
wenjiao8204322
2015-12-16
楼主你好,有问题、一直难以解决,我们项目上线后,就遗留在这就是,生成pdf的时候,写模板表格能够换行,但是变量比如很长,是说明的那种,导出来的pdf就不换行。就直接戳到表格外面去了,一直很费解,求楼主帮忙,该如何解决。如果可以的话加下我qq 3227632996
发表评论
-
BigDecimal商业计算详解
2017-03-07 09:20 9751、浮点数精确计算 ... -
web.xml中load-on-startup标签的含义
2015-09-22 10:56 837原文:http://blog.csdn.net/leideng ... -
Java IO流整理
2015-04-08 22:26 717一、InputStream/OutputStream 和 Re ... -
Java Junit测试例子
2015-01-21 13:46 652原文:http://blog.csdn.net/pleasur ... -
javac命令编译 各种编译
2014-12-12 11:11 480javac参数(-classpath, -sourcepath ... -
HashMap、HashTable、LinkedHashMap和TreeMap用法和区别
2014-11-14 09:22 1068原文转载:http://www.open-open.com/l ... -
上传进度条显示
2014-06-19 14:26 9051.重写 package com.upload.util ... -
java图片等比例缩放
2014-06-05 13:23 1041需要引入jar包 package com.gjw.ima ... -
将小写金额四舍五入保留两位小数,转换成大写金额
2014-05-30 10:26 938将小写金额四舍五入保留两位小数,转换成大写金额 网上收集了 ... -
response.setContentType 参数参照
2014-01-12 10:22 1151response.setContentType()的参数说明 ... -
java文件下载
2014-01-12 10:11 867文件下载有两种方法: 1.直接在网站上放个链接地址,右键另存为 ... -
java 程序代码小功能代码
2013-12-27 15:54 7861.输出格式 年月日 星期 SimpleDateForma ... -
详细解析Java中抽象类和接口的区别
2013-11-04 16:13 529在Java语言中, abst ... -
在线支付
2013-10-28 11:07 727http://blog.csdn.net/he20101020 ... -
java 给图片添加 水印图片
2013-10-22 17:35 891package michael.io.image; ... -
tika
2013-10-18 23:14 1018测试代码: package com.tika.test; ... -
【文件下载】及解决文件名中文乱码问题
2013-10-16 10:32 1636关键代码: package com.action; ... -
日期 字符串截取 格式化 标签
2013-09-25 08:50 15271.java类文件 放到 src的包中 2.tld文件 放到w ... -
Java实现文件自动打包成zip并下载的代码
2013-09-24 15:34 1506package www.gjw.test; impo ... -
java email 发送带附件的邮件
2013-09-09 13:31 1251mixed、related 请看 http://3601935 ...
相关推荐
1.用户导入word生成pdf -首先导入word的时候读取word里面的全部内容。调用(ReadAndWriteDoc)然后将内容 传送到createPdf里面生成pdf。导入的时候读取采用poi /生成的时候采用的是...4.将html转换成pdf(itext)
本示例("html转换成PDF文件demo.zip")提供了一个实现这一功能的演示,主要涉及到HTML解析、PDF生成以及相关的Java编程技术。 1. **HTML解析**:HTML是用于构建网页的标记语言,包含结构和样式信息。在这个示例中...
1.用户导入word生成pdf -首先导入word的时候读取word里面的全部内容。调用(ReadAndWriteDoc)然后将内容 传送到createPdf里面生成pdf。导入的时候读取采用poi /生成的时候采用的是itext ...4.将html转换成pdf(itext)
### HTML转换为PDF的核心原理 HTML转PDF的过程实质上是将网页布局、样式以及可能包含的图片、字体等资源转换为PDF格式,以便于离线阅读和打印。这个过程可以通过不同的方式实现,包括使用服务器端渲染、客户端...
HTML到PDF转换是一种常见的需求,尤其在Web开发和文档生成领域。HTML是一种标记语言,用于构建网页,而PDF(Portable Document Format)则是一种通用格式,能够保持文档的原始布局和样式,便于打印和分发。在给定的...
NULL 博文链接:https://zhangwenlongchina.iteye.com/blog/2108509
HTML转PDF 需要jar包 iText-2.0.8.jar,core-renderer.jar(有支持中文和换行的)
本文将详细介绍如何将HTML转换为PDF,以及这个过程中的关键技术和注意事项。 首先,我们要理解HTML和PDF两种格式的区别。HTML是超文本标记语言,主要用于创建网页,它的特点是动态和灵活,可以适应不同设备的屏幕...
在版本2.0.8中,它提供了将HTML转换为PDF的功能,这对于从网页内容生成打印版或者提供离线阅读材料非常有用。这个过程涉及到多个步骤和技术,下面将详细阐述如何使用iText 2.0.8实现HTML到PDF的转换,并特别关注其中...
因此,将HTML转换为PDF需要正确处理CSS样式、图像、链接等元素。 要使用iTextPDF在Java中实现HTML到PDF的转换,首先确保项目中引入了所需的依赖。在Maven项目中,可以在`pom.xml`文件中添加如下依赖: ```xml ...
在Android平台上,将HTML文本转换为PDF格式是一个常见的需求,特别是在开发阅读应用或者需要将网页内容保存为离线文档时。这个过程涉及到多个技术环节,包括HTML解析、CSS样式处理、图像渲染以及PDF生成。本篇文章将...
在IT行业中,将HTML转换为PDF是常见的需求,特别是在生成报告、文档或电子书时。iText和Flying Saucer是两个强大的Java库,它们可以协同工作来实现这一目标。本篇将详细介绍这两个库以及如何利用它们处理中文内容,...
比如word转成pdf,rtf转换成pdf,txt转成pdf,html转换成pdf,xls转换成pdf,ppt转换成pdf,xml转换成pdf,使用word 转 pdf软件无需安装Adobe Acrobat,Acrobat Reader pdf软件。 word转pdf(pdftoword)工具是一款Word...
总之,将HTML转换为PDF和打包成压缩包是常见的需求,可以通过各种开源工具、API或编程接口来实现。选择哪种方式取决于具体的应用场景,例如自动化需求、跨平台兼容性、性能要求等因素。了解并掌握这些方法,可以帮助...
在这个名为"可以将html转成pdf的代码.rar"的压缩包中,包含的资源可以帮助开发者在VB环境中实现HTML到PDF的转换。 首先,pdflib.dll是一个PDF库,它可能包含了用于创建、编辑和处理PDF文档的API函数。这个动态链接...
HTML转换为PDF是一种常见的需求,尤其在Web应用和文档生成中。这个过程涉及到页面抓取、内容解析以及分页处理,通常由后台服务执行以确保高效性和稳定性。本篇文章将详细探讨这一技术领域,主要围绕Java后台实现HTML...
"Vue 实现 HTML 转 PDF 下载导出及打印" 在本文中,我们将介绍如何...在上面的代码中,我们使用了 img2base64 函数将图片转换为 base64 编码的字符串,然后使用 getPdf 函数将 HTML 转换为 PDF,并将 PDF 下载或打印。