关于使用flying-saucer-pdf,实现xhtml2pdf

@author Guoguo 2013.11.24

关于flying-saucer-pdf

是一个XML/CSS渲染器,flying-saucer-pdf工具以XML标准文件作为输入,CSS进行排版、样式修饰,输出a Swing Panel、图片、PDF格式文档。支持XHTML 1.0 (strict)、HTML格式,CSS 2.1 。谈到CSS,要注意屏幕样式和平面媒体样式(即打印样式)的区别;

flying-saucer-pdf依赖于itext

应用场景

在网站上即时下载PDF

局限问题

资源加载与布局是单线程的。
支持XHTML比XML + CSS,并不是所有的XHTML、HTML标签,如不支持<object>。
不支持传统的HTML或“sheet”。
支持摆动打印,但质量不足。在邮件列表上询问详情。
不支持增量布局(仅适用于屏幕媒体)。
它不能用于用户可编辑的内容;输出是只读的。
不支持HTML插件,如applet、flash程序等。
不支持脚本(如JavaScript)。
对内容的动态更改需要重新加载文档(快速但明显),不能动态地更改DOM并查看结果。
不支持JavaScript DOM回调(onload,onclick事件等)。

转PDF

1.加载字体,如黑体、宋体等中文字体。其它支持字体可以查看 com.lowagie.text.pdf.BaseFont类

import com.lowagie.text.pdf.BaseFont;

ITextRenderer renderer = new ITextRenderer();
FontResolver resolver = renderer.getFontResolver();
resolver.addFont (
    "C:\\WINNT\\Fonts\\ARIALUNI.TTF",
    BaseFont.IDENTITY_H,
    BaseFont.NOT_EMBEDDED
);

2.关于PDF每页大小,请参照CSS3打印样式https://www.w3.org/TR/css3-page/

3.关于PDF每页页边距,页眉页脚,请参照CSS3打印样式https://www.w3.org/TR/css3-page/

4.关于PDF分页

渲染时,FS有默认分页。

当然需要强制分页的,可使用

page-break-before

page-break-after

强制不分页,可使用

page-break-inside

5.支持bookmarks\图片

参考

官方文档:http://flyingsaucerproject.github.io/flyingsaucer/r8/guide/users-guide-R8.html

时间: 2024-10-12 09:12:29

关于使用flying-saucer-pdf,实现xhtml2pdf的相关文章

Flying Saucer实现html转pdf(一些问题,持续更新)

Flying Saucer实现html转pdf(及一些问题,持续更新) 关于FlyingSaucer的使用官网上有详细的介绍. 官网地址: https://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html#the-problem-with-pdfs 中国人在使用FlyingSaucer将Html转换成PDF的过程中有如下问题: l 中文不显示的问题 l <td>内容过长

让Flying saucer支持font定义

在wangEditor里给某段字体加上颜色后,在生成的PDF里无法体现出来,只好打开flying saucer的源码debug,发现XhtmlNamespaceHandler类中没有对font元素的处理,于是依样画瓢: public String getNonCssStyling(Element e) { if (e.getNodeName().equals("table")) { return applyTableStyles(e); } else if (e.getNodeName

Java使用Flying Saucer实现HTML代码生成PDF文档

1.需要的jar包:org.xhtmlrenderer.flying-saucer-pdf-itext5,itext.itext,Maven依赖如下: 1 <dependency> 2 <groupId>org.xhtmlrenderer</groupId> 3 <artifactId>flying-saucer-pdf-itext5</artifactId> 4 <version>9.0.7</version> 5 &l

iTextRenderer(Flying Saucer) HTML转PDF

iTextRenderer 在依赖 iText 的基础上,单独实现了HTML渲染PDF,基本上能实现 CSS 2.1的整体性,并且完全符合 W3C 规范. 使用html和css定义样式和呈现的内容.如下流程图: 中文支持 首先需要添加中文字库,也就是你的页面中用到的所有字体: ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont("C:/Windows/Fonts/simsun.ttc&

使用wkhtmltopdf实现HTML转PDF的解决方案

最近,项目需要将HTML页面转换为PDF文件,所以就研究了下HTML转PDF的解决方案,发现网上比较流行的解决方案有3种: (1)iText (2)Flying Saucer (3)wkhtmltopdf 还有一些收费的,我就没测试过了,前两种对HTML的要求过于严格,而且即使你写标准的HTML(当然这都是理想情况下),他也未必可以完美解析,所以我就选择了(3),wkhtmltopdf基于WebKit渲染引擎将HTML内容转换为HTML页面,之后再转换成PDF,所以其转换后的PDF文件的显示效果

电子凭证 : Java 生成 Pdf

来源:蛙牛, my.oschina.net/lujianing/blog/894365 如有好文章投稿,请点击 → 这里了解详情 1.背景 在某些业务场景中,需要提供相关的电子凭证,比如网银/支付宝中转账的电子回单,签约的电子合同等.方便用户查看,下载,打印.目前常用的解决方案是,把相关数据信息,生成对应的pdf文件返回给用户. 本文源码:http://git.oschina.net/lujianing/java_pdf_demo 2.iText iText是著名的开放源码的站点sourcefo

LightOJ Aladdin and the Flying Carpet 1341【算数基本定理+几何】

1341 - Aladdin and the Flying Carpet PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: 32 MB It's said that Aladdin had to solve seven mysteries before getting the Magical Lamp which summons a powerful Genie. Here we are concerned

java生成word的几种方案

http://blog.sina.com.cn/s/blog_a5e968370101crtl.html 1. Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁.使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用.DLL动态链接库的生成需要windows平台的支持. 2. Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Form

【转】What is an entity system framework for game development?

What is an entity system framework for game development? Posted on 19 January 2012 Last week I released Ash, an entity system framework for Actionscript game development, and a number of people have asked me the question “What is an entity system fra

Linux下使用Markdown

1.在Linux系统中,编辑markdown可以用retext工具 # Debian/Ubuntu sudo apt-get install retext retext Release-Notes.md 2.使用python-markdown将markdown文件转换成html文件 markdown_py -o html4 Release-Notest.md > Release-Notes.html 3.使用python-pisa将html转换成pdf文件 xhtml2pdf --html Re