1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public boolean convertHtmlToPdf(String inputFile, String outputFile) throws Exception { OutputStream os = new FileOutputStream(outputFile); ITextRenderer renderer = new ITextRenderer(); String url = new File(inputFile).toURI().toURL().toString(); renderer.setDocument(url); // 解决中文支持问题 ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //解决图片的相对路径问题 renderer.getSharedContext().setBaseURL("file:/D:/"); renderer.layout(); renderer.createPDF(os); os.flush(); os.close(); return true; } 上面这段代码是这样的,输入一个HTML地址URL = inputFile,输入一个要输出的地址,就可以在输出的PDF地址中生成这个PDF。
注意事项: 1.输入的HTML页面必须是标准的XHTML页面。页面的顶上必须是这样的格式: 1 2 并且HTML页面的语法必须是非常严谨的,所有标签都必须闭合等等(由于flying-Saucer做了XML解析的工作,不严谨会报错的。)
这是对页面的第一个要求。 2.要用到图片的地方写相对路径的形式,比如: 1 而它的图片位置则必须在Java代码中指定。
renderer.getSharedContext().setBaseURL("file:/D:/"); 也有另一种方法就是直接在标签中写绝对路径。 3.Flying-Saucer在解析tiff格式的图片的时候会报错。
具体原因我还没找到。希望大家能够指点我。
4.如果在页面中有中文字体的话。必须在HTML代码中的样式中写上某种字体的css,并且必须是用英文的,然后在Java代码中写上对应的文件位置。
1 2 ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 上面的方法是添加了宋体。也可以添加其他字体。
1 安装Adobe Acrobat后会默认在IE浏览器中添加PDF工具栏。
该工具可以方便的将网页转化成PDF文档,或者添加入已有的PDF文档,Adobe PDF Explorer工具栏则可以在IE的收藏夹界面内管理window内的HTML文档与PDF文档的转化。
2、安装单独的pdf虚拟打印机(pdffactory、ultra pdf等),通过网页的打印功能转换。
3 使用客户端软件HTML2PDF_Pilot。
HTML2PDF_Pilot的截面如上图,很简洁。
如果只是要完成最简单的工作只需如箭头所示,点击上方的添加按钮添加HTML文档然后点击转换,稍等既可以完成一个HTML文档的转化工作。
两种方法的比较
灵活性:
PDF工具栏的方式相比客户端的方式要灵活许多。
在使用的过程中发现HTML2PDF_Pilot不能通过URL(网址)直接转化PDF文档,而工具栏只需在浏览的过程随意使用。
功能: 在功能的环节上,客户端方式的HTML2PDF_Pilot就明显要比PDF工具栏要强大许多
工具栏只提供了最基本的保存和添加入已有文档的功能,而HTML2PDF_Pilot则提供了更为丰富的选项。
另外,如果需要批量转化网页文件的话,工具栏的方式也无法提供对应的功能。
其实还是有很多可以选择的方式,比如把网页转化为WORD的文件格式然后通过WPS软件来转化文档等,只要能灵活运用,html文件转PDF是非常简单的事情。
把网页转换为pdf?
好像很难。
我曾经搞过类型的项目。
网上有iTextSharp这样的开源库,可以操作pdf文件。
但是,要把网页转为pdf, 这涉及对网页的渲染工作,这个只有IE才能完成。
如果运行的环境可控,可以考虑采用为运行环境安装一个PDF打印机什么的。然后用DDE技术调用IE直接把指定的网页打印到PDF打印机。就生成了PDF文件。
如果运行环境不可控,那真得是很难。
1这个方法是我认为最简单、高效的,只要安装了360浏览器、火狐浏览器或谷歌浏览器就可以轻松实现。下面笔者以360浏览器为例,我们只要在浏览器的右上角点击“文件”按钮,然后选择“打印”,然后选择另存为PDF就可以了
2选择目标另存为PDF,另存为PDF后就可以了,这个是将整个网页转换成PDF文件的,如果网页很长可能会有2、3页的PDF。目前上面笔者演示的这个功能应该是可以在所有给予Chrome内核的浏览器中实现,包括360、搜狗浏览器极速版、Chrome、猎豹浏览器,而且操作上基本都一样(凭经验猜想应该是如此)。但IE内核就没有这个功能,而火狐里面则方法不同,不过肯定有插件可以实现。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:3.277秒