Java HTML直接导出PDF
对于java中如何从html中直接导出pdf,有很多的开源代码,这里个人用itext转。
首先需要的包有:core-renderer-1.0.jar
core-renderer-R8pre1.jar
core-renderer.jar
iText-2.0.8.jar
jtidy-4aug2000r7-dev.jar
Tidy.jar
iTextAsian.jar
java代码的话就比较简单了。具体是先用Tidy将html转换为xhtml,将xhtml转换为其它各种格式的。虽然在转化到pdf时也是用的iText。代码如下:
- //struts1.x中
- else if("Html2Pdf".equalsIgnoreCase(action)){
- exportPdfFile("http://localhost:8080/jsp/test.jsp");
- return null;
- }
- // 导出pdf add by huangt 2012.6.1
- public File exportPdfFile(String urlStr) throws BaseException {
- // String outputFile = this.fileRoot + "/" +
- // ServiceConstants.DIR_PUBINFO_EXPORT + "/" + getFileName() + ".pdf";
- String outputFile = "d:/test3.pdf";
- OutputStream os;
- try {
- os = new FileOutputStream(outputFile);
- ITextRenderer renderer = new ITextRenderer();
- String str = getHtmlFile(urlStr);
- renderer.setDocumentFromString(str);
- ITextFontResolver fontResolver = renderer.getFontResolver();
- fontResolver.addFont("C:/WINDOWS/Fonts/SimSun.ttc",BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);// 宋体字
- fontResolver.addFont("C:/WINDOWS/Fonts/Arial.ttf",BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);// 宋体字
- renderer.layout();
- renderer.createPDF(os);
- System.out.println("转换成功!");
- os.flush();
- os.close();
- return new File(outputFile);
- } catch (FileNotFoundException e) {
- // logger.error("不存在文件!" + e.getMessage());
- throw new BaseException(e);
- } catch (DocumentException e) {
- // logger.error("生成pdf时出错了!" + e.getMessage());
- throw new BaseException(e);
- } catch (IOException e) {
- // logger.error("pdf出错了!" + e.getMessage());
- throw new BaseException(e);
- }
- }
- // 读取页面内容 add by huangt 2012.6.1
- public String getHtmlFile(String urlStr) throws BaseException {
- URL url;
- try {
- if (urlStr.indexOf("?") != -1) {
- urlStr = urlStr + "&locale="
- + LocaleContextHolder.getLocale().toString();
- } else {
- urlStr = urlStr + "?locale="
- + LocaleContextHolder.getLocale().toString();
- }
- url = new URL(urlStr);
- URLConnection uc = url.openConnection();
- InputStream is = uc.getInputStream();
- Tidy tidy = new Tidy();
- OutputStream os2 = new ByteArrayOutputStream();
- tidy.setXHTML(true); // 设定输出为xhtml(还可以输出为xml)
- tidy.setCharEncoding(Configuration.UTF8); // 设定编码以正常转换中文
- tidy.setTidyMark(false); // 不设置它会在输出的文件中给加条meta信息
- tidy.setXmlPi(true); // 让它加上<?xml version="1.0"?>
- tidy.setIndentContent(true); // 缩进,可以省略,只是让格式看起来漂亮一些
- tidy.parse(is, os2);
- is.close();
- // 解决乱码 --将转换后的输出流重新读取改变编码
- String temp;
- StringBuffer sb = new StringBuffer();
- BufferedReader in = new BufferedReader(new InputStreamReader(
- new ByteArrayInputStream(
- ((ByteArrayOutputStream) os2).toByteArray()),
- "utf-8"));
- while ((temp = in.readLine()) != null) {
- sb.append(temp);
- }
- return sb.toString();
- } catch (IOException e) {
- // logger.error("读取客户端网页文本信息时出错了" + e.getMessage());
- throw new BaseException(e);
- }
- }
为了解决包的问题,加上Maven <!-- pdf导出 -->
- <dependency>
- <groupId>com.lowagie</groupId>
- <artifactId>itext</artifactId>
- <version>2.1.7</version>
- </dependency>
- <dependency>
- <groupId>org.xhtmlrenderer.flyingsaucer</groupId>
- <artifactId>pdf-renderer</artifactId>
- <version>1.0</version>
- </dependency>
- <dependency>
- <groupId>jtidy</groupId>
- <artifactId>jtidy</artifactId>
- <version>4aug2000r7-dev</version>
- <type>jar</type>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>net.sf.barcode4j</groupId>
- <artifactId>barcode4j-light</artifactId>
- <version>2.0</version>
- </dependency>
- <dependency>
- <groupId>avalon-framework</groupId>
- <artifactId>avalon-framework-impl</artifactId>
- <version>4.2.0</version>
- </dependency>
- <!-- pdf -->
另外附上 稍微复杂的PDFUtils.java文件,由于没时间就不做整理解释了!见下载附件!
相关推荐
NULL 博文链接:https://huangronaldo.iteye.com/blog/1555917
Java HTML直接导出PDF需要的包有:core-renderer-1.0.jar core-renderer-R8pre1.jar core-renderer.jar iText-2.0.8.jar jtidy-4aug2000r7-dev.jar Tidy.jar iTextAsian.jar
PD4ML 实测Java将HTML导出为PDF 成功解决中文乱码问题
java+ireport 例子 导出html以及pdf 可以直接运行,使用的是mysql数据库 DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(10) DEFAULT NULL, `...
java语言动态生成html串,通过flying saucer动态生成PDF文件;处理图片大小及坐标等信息...
java实现html转pdf,包含后端代码,html测试页面,pom依赖,jar包,如页面过于复杂需调整页面,有些样式itextpdf不支持,请寻找其它样式替换。
使用开源报表jasperReport,并结合irport前端报表设计器,使用Java程序实现报表的不同格式的导出,包括pdf,excel,html,打印预览等功能,程序包含所需Jar包,并有详细的注释
java使用itext实现pdf文件下载小案例,通过系统路径下载,和通过浏览器下载
可以导出PDF,但是导出的PDF中,表格没有线框
itext html导出pdf---------------------------------------------------------------------------------
包含 itext-asian-5.2.0.jar itextpdf-5.5.5.jar
导出mysql数据库结构到pdf、html
直接将网页转成pdf,生成的pdf和网页的样式一样,也可以含有图片,
Html解决pdf导出出现的中文数字等不换行等问题, 已重新修改了Jar包, 重新打包好了,可直接使用,亲测好用.
java根据动态模板生成pdf(包含柱状图)所需jar包 iText+FreeMarker+JFreeChart生成可动态配置的PDF文档。 iText有很强大的PDF处理能力,但是样式和排版不好控制,直接写PDF文档,数据的动态渲染很麻烦。 FreeMarker...
# 本项目主要介绍 1. itextpdf(CreatePdf) ...对于不会HTML的制作,熟悉**itextpdf**的,完全可以使用PdfTemplate,该方法其实就是将itextpdf中PDF的元素逆解析 5. xdocreport 复杂word动态生成上功能很强大
报表导出excel word pdf html java
使用Easy POI的API实现POI对Excel的所有操作,并且它的封装类可以让你快速上手,无需编写大量的Excel格式设置等复杂代码,高效,完善,高并发
java工程中将word格式模板类型在浏览器中以pdf格式下载或预览,使用thymeleaf前端框架,maven工程的demo。
核心功能为java导出pdf,只需要准备一段html字符串就能导出,很简单的操作. 其它功能: 1,纯js无刷新文件上传下载; 2,纯js无刷新分页及增删改查; 3,仿百度搜索智能提示,自动补全; 4,多功能组合框的应用,既...