`

html2pdf 实现思路和代码

阅读更多

主要代码参考了 这篇帖子http://www.iteye.com/topic/509417 ,写的非常不错。尤其看他的的解决问题的思路特别受启发,我在看这篇帖子之前也看到了flying-saucer ,并且下载了jar包做了例子,但是没有成功我就匆忙放弃了,又踏上了寻找的路途。 以后要记得看 要找的项目的介绍,如果合适,就去看文档,文档里面一般是非常全面的。

首先itext就不用说了,自己去google。 直接上saucer的介绍:

 

Flying Saucer takes XML or XHTML and applies CSS 2.1-compliant stylesheets to it, in order to render
 to PDF (via iText), images, and on-screen using Swing or SWT. The library implements (basically) the
 entirety of CSS 2.1 and aims to be fully compliant with the W3C specification; it includes a small
 handful of CSS 3 features.

 意思: saucer支持 xml和xhtml css2.1,并且可以生成pdf,图片,这个貌似是 java可视化界面。

这个库实现了 全部css2.1并致力于 符合w3c标准,同时包含一些css3的属性,如 @page,可以用来定制 pdf的宽高和margin。

又从下面看到,它没有支持传统的html,只支持xhmtl和css; 它支持xhtml+css要弱于 xml+css。

看来还可以生成image,这也是个不错的东东。

 

我第一次实验saucer时 就用了 html,悲剧啊 

还有它对中文支持情况,如果你打算在html中使用中文,就必须在 css中全局定义 字体。并在 代码中 添加该字体文件。否则是不能显示中文的。

 

上代码

 

public static void main(String[] args) throws Exception {  
	        String inputFile = "index11.html";  
	        System.out.println(new File(inputFile).getAbsolutePath());
	        String url = new File(inputFile).toURI().toURL().toString();  
	        String outputFile = "firstdoc.pdf";  
	        OutputStream os = new FileOutputStream(outputFile);  
	        ITextRenderer renderer = new ITextRenderer();  
	        renderer.setDocument(url);
	  
	        // 解决中文支持问题  
	        ITextFontResolver fontResolver = renderer.getFontResolver();

	        fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC



", BaseFont.IDENTITY_H, 
BaseFont.NOT_EMBEDDED);   // 你可以把该文件放到项目中,这样打包后就不用依赖机器环境了
			

// 我这里指定为sinsun 是因为我在css中指定 了字体为 宋体

	        // 解决图片的相对路径问题    (这里我发现不用指定 ,图片显示也会正常,只是图片必须要指定为相对路径)
	       // renderer.getSharedContext().setBaseURL("file:/D:/grails-work/html2pdf/");  
	          
	        renderer.layout();  
	        renderer.createPDF(os);  
	          
	        os.close();  
	}  
  

 

rar中有html和css图片,还有生成的pdf,也有需要的jar,可以自行测试。仅在此记录一下,我也正在看 文档,有了新的想法,再加

分享到:
评论

相关推荐

    代码之美(中文完整版).pdf

    本书给出了38位大师级程序员在项目设计中的思路、在开发工作中的权衡,以及一些打破成规的决策。 第1章 正则表达式匹配器 。 1.1 编程实践 1.2 实现 1.3 讨论 1.4 其他的方法 1.5 构建 1.6 小结 第2章 Subversion中...

    Vue网页html转换PDF(最低兼容ie10)的思路详解

    2.实现思路:  1> 使用html2canvas.js将网页转换为图片  2> 使用jsPdf.debug.js将canvas生成的图片转换为pdf文件 具体实现:  要这样实现首先要引入两个插件:  html2canvas.js  jsPdf.debug.js 注:  因为ie...

    HTML5 Canvas游戏开发实战.pdf

    《HTML5 Canvas游戏开发实战》主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏开发实例深入剖析了其内在原理,让读者不仅知其然,而且知其所以然。...

    PDF文件转换成html并加水印

    PDF文件转换成html并加水印,之前做的ppt转html在线预览有兼容性问题,所以换了一种思路,先将ppt转成pdf,再转成html文件,即可实现在线预览,代码支持大部分pdf文件转换成html,这是最近做项目碰到的问题后的解决...

    pdf文件转为图片完美显示在页面上

    利用pdf.js 获取pdf文档并解析成分页的形式显示的demo进行改编,将单个显示图片的分页方式改为全部平铺显示的方式,利用js的for循环方式,动态添加canvas,思路已经说的明白,如果自己不能解决,可获取此demo,如果...

    HTML, XHTML, and CSS Bible, 5th Edition.pdf

    第一部分通过一系列中大型案例全方位对html 5的各个重要知识点进行了详细的讲解,每个案例包含案例概述、页面效果展示、案例所涉及主要知识点(精要)、源代码剖析4个部分,读者既能根据书中的步骤动手实践,又能...

    jQuery源码分析系列中文PDF版

    资源名称:jQuery源码分析系列...其独特而又优雅的代码风格改变了Javascript程序员的设计思路和编写程序的方式。 有需要的朋友可以下载看看资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    HTML转PDF的纯客户端和纯服务端实现方案

    所以我们可以在服务端启动puppeteer浏览器,打开目标网址,使用chrome浏览器自带的转换功能进行html到pdf的转换。 服务端生成核心代码 首先要安装puppeteer,npm安装可能会出错,最好使用cnpm淘宝镜像安装。 输入 ...

    JAVA上百实例源码以及开源项目源代码

     Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...

    JavaScript+DOM编程艺术.pdf

    《javascript dom编程艺术:第2版》讲述了javascript、dom 和html5 的基础知识,着重介绍dom 编程技术背后的思路和原则:平稳退化、渐进增强和以用户为中心等。这些概念对于任何前端web 开发工作都非常重要。本书将...

    C++标准库介绍.pdf

    以自由使用、开放源代码面向对象框架在其中实现了许多用于并发通信软件Software核心模式ACE提供了组丰 富可复用C包装外观(Wrapper Facade)和框架组件可跨越多种平台完成通用通信软件Software任务其中包括:事 件多路...

    白帽子讲浏览器安全.钱文祥(带详细书签).pdf

    本书兼顾攻击者、研究者和使用者三个场景,对大部分攻击都提供了分析思路和防御方案。本书从攻击者常用技巧的“表象”深入介绍浏览器的具体实现方式,让你在知其然的情况下也知其所以然。 第1篇 初探浏览器安全 1 1...

    java源码包2

     Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...

    DWZ 富客户端框架使用手册.pdf

    DWZ富客户端框架设计目标是简单实用、扩展方便灵活、快速开发、RIA思路...看demo每个组件演示效果和代码(留意组件html结构)。建议用firebug看html结构、CSS和调试JS都非常方便。初学者可以看看dwz.ui.js和dwz.ajax.js

    java源码包---java 源码 大量 实例

     Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...

    java生成pdf(利用dom4j、freemarker生成固定模板格式的pdf文件)

    iText,生成PDF文档,还支持将XML、Html文件转化为PDF文件; Apache PDFBox,生成、合并PDF文档; docx4j,生成docx、pptx、xlsx文档,支持转换为PDF格式。 比较: iText开源协议为AGPL,而其他两个框架协议均为...

    JAVA上百实例源码以及开源项目

     Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...

Global site tag (gtag.js) - Google Analytics