zoukankan      html  css  js  c++  java
  • 关于使用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图片

    其它

    还可以给PDF加水印、加密等制定文件属性

    参考

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

  • 相关阅读:
    zabbix笔记之计算型监控项详解
    zabbix笔记之磁盘IO介绍
    zabbix笔记之Graphtree配置
    zabbix笔记之告警时远程执行命令
    zabbix笔记之异常优化
    zabbix笔记之IPMI配置
    基本的sql 语句
    socket 套接字
    调用父类的三种方法
    实例属性和类属性
  • 原文地址:https://www.cnblogs.com/gsyun/p/7324316.html
Copyright © 2011-2022 走看看