- 浏览: 289571 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
狼子六:
已经开始用了
Java 枚举7常见种用法 -
相约的旋律:
方法一下面的"public static fianl ...
Java 枚举7常见种用法 -
kiddy2012:
...
[转载]程序员装B指南 -
fancy105:
写得很好,简单明了双全面!
Java 枚举7常见种用法 -
he_wen:
请问一下 G1算法是否在线上使用了?
Garbage First(G1) 日志分析工具
PDF是目前为止最流行的文档格式之一。通常情况下,想要创建一个PDF文档,需要使用Adobe的API来生成,但这非常麻烦。为了能方便的将HTML(XHTML)生成PDF文档,下面介绍两个开源的java库:Flying Saucer和iText。
Flying Saucer和iText介绍:
Flying Saucer(或者叫xhtmlrender project on java.net)是一个基于iText的开源java库,能够轻松的将html(带css2.1)生成pdf。
iText是一个生成PDF文档的开源java库,能够动态从XML或者数据库生成PDF,同时它具备PDF文档的绝大多数属性(比如加密……),支持java,C#等。
生成简单的PDF
下面我们首先创建一个简单的带css的html,代码如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>My First Document</title> <style type="text/css"> b { color: green; } </style> </head> <body> <p> <b>Greetings Earthlings!</b> We've come for your Java. </p> </body> </html>接下来生成一个pdf
package oliver.itext.html2pdf; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import org.xhtmlrenderer.pdf.ITextRenderer; import com.lowagie.text.DocumentException; public class FirstDoc { public static void main(String[] args) throws DocumentException, IOException { String path = System.getProperty("user.dir") + "/src/"; String inputFile = path + "samples/firstdoc.html"; String url = new File(inputFile).toURI().toURL().toString(); String outputFile = path + "outputs/fistdoc.pdf"; OutputStream os = new FileOutputStream(outputFile); ITextRenderer render = new ITextRenderer(); render.setDocument(url); render.layout(); render.createPDF(os); os.close(); } }
结果如下:
用Fly生成内容
下面的我们先用StringBuilder生成一个HTML的字符串,然后用DOM解析,生成PDF。
com.sankuai.meituan.ct.doamin; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.StringBufferInputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.xhtmlrenderer.pdf.ITextRenderer; @SuppressWarnings("deprecation") public class OneHundredBottles{ public static void main(String[] args) throws Exception { String path =System.getProperty("user.dir")+"/src/"; StringBuffer buf = new StringBuffer(); buf.append("<html>"); // put in some style buf.append("<head><style language='text/css'>"); buf.append("h3 { border: 1px solid #aaaaff; background: #ccccff; "); buf.append("padding: 1em; text-transform: capitalize; font-family: sansserif; font-weight: normal;}"); buf.append("p { margin: 1em 1em 4em 3em; } p:first-letter { color: red; font-size: 150%; }"); buf.append("h2 { background: #5555ff; color: white; border: 10px solid black; padding: 3em; font-size: 200%; }"); buf.append("</style></head>"); // generate the body buf.append("<body>"); buf.append("<p><img src='"+path+"samples/100bottles.jpg'/></p>"); for(int i=99; i>0; i--) { buf.append("<h3>"+i+" bottles of beer on the wall, " + i + " bottles of beer!</h3>"); buf.append("<p>Take one down and pass it around, " + (i-1) + " bottles of beer on the wall</p>/n"); } buf.append("<h2>No more bottles of beer on the wall, no more bottles of beer. "); buf.append("Go to the store and buy some more, 99 bottles of beer on the wall.</h2>"); buf.append("</body>"); buf.append("</html>"); DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = builder.parse(new StringBufferInputStream(buf.toString())); ITextRenderer renderer = new ITextRenderer(); renderer.setDocument(doc, null); String outputFile = path+"outputs/100bottles.pdf"; OutputStream os = new FileOutputStream(outputFile); renderer.layout(); renderer.createPDF(os); os.close(); } }效果如下:
在服务端创建PDF
下面展示在servlet里面创建pdf
public class PDFServlet extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/pdf"); StringBuffer buf = newStringBuffer(); buf.append("<html>"); String css = getServletContext().getRealPath("/PDFservlet.css"); // put in some style buf.append("<head><link rel='stylesheet' type='text/css' "+"href='"+css+"' media='print'/></head>"); ... //generate the rest of the HTML // parse our markup into an xml Document try{ DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = builder.parse(new StringBufferInputStream(buf.toString())); ITextRenderer renderer = new ITextRenderer(); renderer.setDocument(doc, null); renderer.layout(); OutputStream os = response.getOutputStream(); renderer.createPDF(os); os.close(); } catch(Exception ex) { ex.printStackTrace(); } }原文地址:http://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html
发表评论
-
Java压缩/解压缩二进制文件
2013-02-08 13:56 5742在Java中提供Deflater和Inflater工具类来 ... -
java常用并发工具介绍
2013-02-06 23:22 1628本文主要介绍的工具包括: CountDownLa ... -
Garbage First(G1) 日志分析工具
2012-12-22 22:35 2211G1介绍:http://softbeta.iteye.com/ ... -
Spring源码阅读——Ioc初始化过程
2012-11-20 21:52 1270以web项目启动为例,介绍一下Ioc容器的初始化。 下面这个 ... -
Spring源码阅读——获得bean
2012-10-20 20:57 3193已XmlWebApplicationContext为例,从ge ... -
Spring源码阅读——BeanFactory体系结构
2012-10-10 18:10 2242以下是看代的码随笔,想到哪写到哪,没有组织逻辑,见谅见谅。 ... -
生成随机数组
2012-09-11 20:23 10891.要求生成一组n位的数字,0-9...(n个)之间的稠密集合 ... -
O(1)复杂度获得栈中的极值
2012-09-09 23:47 1302设计一个栈,O(1)复杂度实现入栈,出栈,栈中最大值,栈中最小 ... -
ubuntu12.04上编译openjdk7
2012-06-13 15:31 4913获取源码 从openjdk代码仓库获取(比较慢) ... -
jinfo 查看、设置JVM参数
2012-04-25 15:36 5154用法: # jinfo -h Usage: ... -
一些参数,弥补CMS(Concurrent Mark-Sweep)收集器的缺点
2012-03-28 21:11 1681CMS缺点:http://softbeta.iteye ... -
[转载]PrintCompilation 参数解释
2012-03-27 13:59 1551英文不好,所以就不翻译了: b Blocking co ... -
《Head First 设计模式》读书笔记
2012-03-01 11:30 15461.策略模式(Strategy) ... -
解决jrobin图像中文乱码
2012-02-14 23:31 1162目前发现一种方法可以解决,做个标记。 利用字体: RrdG ... -
Java内存管理——垃圾收集概念及特点
2012-02-03 12:37 1065碎碎念,介绍Java内存管 ... -
[转载]hotspot源码(JDK7)
2012-01-19 19:25 1565源码结构图,方便理解: ├─agent ... -
跨平台获取java进程id(Process ID in Java)
2012-01-18 19:20 9162原创地址:http://blog.lichengwu.cn/ ... -
了解CMS(Concurrent Mark-Sweep)垃圾回收器
2011-12-27 20:13 121101.总体介绍: CMS(Concurrent Mark- ... -
fail-fast
2011-12-13 19:34 1047fail-fast:快速失败 一般情况下,在对集合进行迭代( ... -
利用VisualVM监视远程JVM
2011-11-17 20:06 4720VisualVM介绍 VisualVM是集成了多个JDK命令 ...
相关推荐
总的来说,Java结合Flying Saucer和iText库,可以很好地实现HTML到PDF的转换,并在指定位置添加印章,满足电子文档签署和安全认证的需求。在实际项目中,还需要考虑错误处理、资源管理以及性能优化等因素,以确保...
以下是一个简单的示例,展示了如何使用Itext和Flying Saucer进行HTML到PDF的转换: ```java import org.xhtmlrenderer.pdf.ITextRenderer; // 创建一个ITextRenderer实例 ITextRenderer renderer = new ...
ITextRenderer renderer = new ITextRenderer(); ITextFontResolver fontResolver = renderer.getFontResolver()...String htmlstr = "你的HTML字符串"; renderer.setDocumentFromString(htmlstr); renderer.layout();
本文讲述如何使用SpringBoot集成Freemarker和FlyingSaucer实现PDF在线预览、打印和下载的功能。该技术方案可以应用于各种在线文档预览、报表生成、电子邮件发送等场景。 一、Freemarker模板引擎 Freemarker是Java...
`Flyingsaucer`是一个开源Java库,专门用于将HTML内容转换为PDF或其他格式,它支持CSS2.1标准,使得网页的布局和样式能够很好地在PDF中保留。在处理中文内容时,`Flyingsaucer`可能面临一些挑战,但通过正确的配置,...
总之,使用iTextPDF库在Java中实现HTML到PDF的转换是一项实用的技能,但需要注意库对HTML和CSS的支持限制。根据实际需求,可能需要对HTML源码进行调整,或者考虑使用其他兼容性更强的库来实现更丰富的转换效果。
iText和Flying Saucer是两个非常流行的Java库,用于生成高质量的PDF文档。这两个库结合使用,可以有效地处理HTML内容并将其转换为PDF格式,同时支持中文字符集,解决了在生成PDF时中文显示不正常的问题。 首先,...
在与flying saucer结合使用时,iText通常用来完成最后的PDF生成步骤,将flying saucer处理后的页面流转换为完整的PDF文档。 【freemarker】是一个模板引擎,常用于生成HTML、XML或其他文本格式的文档。开发者可以...
标题中的“flying-saucer-pdf-9.0.9转pdf相关包”指的是使用`flying-saucer`库的特定版本9.0.9来将HTML转换为PDF的工具集。 1. **flying-saucer-pdf-9.0.9.jar**:这是`flying-saucer`的核心组件,负责将HTML渲染成...
在pom.xml文件中,引入flying-saucer和相关的转换库,如itext。然后,创建一个服务类,使用Java ITextRenderer进行转换操作,接收HTML字符串或文件,生成PDF并返回或保存到服务器。 5. **Freemarker模板引擎**: ...
Flying Saucer扩展了IText的功能,使得我们可以利用HTML和CSS这种更熟悉的Web开发语言来生成PDF,这样可以利用已有的前端资源快速生成PDF。 在生成PDF过程中,中文显示问题是一个常见的挑战。由于PDF标准和Unicode...
Flyingsaucer的核心在于它使用了开源的Web渲染引擎IText,它能够解析HTML并将其转化为高质量的PDF文档。通过这个工具,我们可以将网页设计精确地复刻到PDF中,包括字体、颜色、图像、表格等元素。这为开发者提供了一...
flying-saucer-pdf-itext5-9.0.3.jar
本文将深入探讨如何使用Flying Saucer实现HTML到PDF的转换,并解决可能遇到的一些问题。 首先,让我们了解Flying Saucer的基本原理。它基于开源的Web浏览器引擎Itext,可以解析HTML、CSS,并将其渲染为PDF。 Flying...
Flyingsaucer和iText就是两个强大的工具,它们能帮助我们轻松实现这一目标。本篇文章将详细介绍这两个库的功能、使用方法以及它们如何协同工作,以满足PDF生成的需求。 首先,让我们了解下Flyingsaucer。Flying...
Flying Saucer和iText介绍: A. iText是一个生成PDF文档的开源java库,能够动态从XML或者数据库生成PDF,同时它具备PDF文档的绝大多数属性(比如加密……),支持java,C#等。官网:http://www.itextpdf.com/ B. ...
"Flying-Saucer"是一个开源Java库,主要用于将HTML内容转换为PDF格式,方便进行电子文档的生成和分发。这个库包含了多个组件,每个组件都有特定的功能,以协同完成HTML到PDF的转换过程。在提供的信息中,我们提到了...
iText是一款广泛使用的Java库,专门用于创建和处理PDF文档。在这个特定的场景中,我们关注的是它在HTML转换为PDF的功能。iText库提供了一种高效且灵活的方式来将HTML内容转换成高质量的PDF格式,这在需要将网页或...
总之,"flying-saucer-core"和"flying-saucer-pdf-itext5"是Java开发中处理HTML转PDF问题的得力助手,特别是对于处理中文字符的换行问题,它们提供了有效的解决方案。通过合理运用这两个库,我们可以创建出符合预期...