最近调查了一个新鲜东东。XSL-FO和FOP,用来将FO文件生成PDF文件,觉得它是个不错的东东,所以记下来,与大家分享。

相关术语:

XSL-FO(XML Stylesheet Language-Formatting Objects)

XSL-T(XSL Transformations)

FOP (Formatting Objects Processor)

英文教程:

FOP下载地址:

注意:fop.jar要放在你的CLASSPATH中。

命令格式:

-------------------------------------------------------------------

至于XSL-FO的起源,特点和作用我就不多啰嗦了,祥细说明在网上到处都是,自已去看吧。我只想来点实用的。在这里只要了解一点,XSL-FO他只是描述了页面展现给用户的时候它应该是什么样子的就行了。

1:直接将fo文件通过FOP命令转换成pdf文件。

格式: fop test.fo test.pdf

2:将xml+xslt(样式表文件)转换成pdf文件。

格式:fop -xsl test.xsl -xml test.xml -pdf test.pdf

--------------------------------------------------------------------

对双字节(中/日文)的支持:

--------------------------------------------------------------------

这里我只介绍日文的例子,中文照着做就行了。

实现步骤:

1.使用批处理生成字体文件(XML)

java -cp build\fop.jar;lib\avalon-framework-cvs-20020806.jar; org.apache.fop.fonts.apps.TTFReader -ttcname "MS Gothic" C:\WINNT\Fonts\MSGOTHIC.TTC msgothic.xml

注意:TTC文件和TTF文件的生成方式不同。

上面给出的是TTC字体文件的例子。

TTF命令格式是:

java -cp build\fop.jar;lib\avalon-framework-cvs-20020806.jar; org.apache.fop.fonts.apps.TTFReader C:\WINNT\Fonts\Cyberbit.ttf msmincho.xml

上面只用到了fop.jar和avalon-framework-cvs-20020806.jar,这因为我的FOP Ver是0.20.5,如果小于这个版本则要加上其他的包,这个在网上的教程没有说,

结果我用他们给出的命令格式狂试,结果就是出错,最后还是在apache网上找到了正解,

擦汗....

2.将生成的字体文件注册到fop。

修改下面的配置文件conf/userconfig.xml

增加下面的内容:

3.利用FOP再次生成PDF文件(FOP命令格式有变)

修改你的FOP.BAT批处理文件,将最后一行

java -cp "%LOCALCLASSPATH%" org.apache.fop.apps.Fop %1 %2 %3 %4 %5 %6 %7 %8

修改成

java -cp "%LOCALCLASSPATH%" org.apache.fop.apps.Fop -c conf/userconfig.xml %1 %2 %3 %4 %5 %6 %7 %8

也就是增加了-c conf/userconfig.xml参数。

网上很多地方这一点也没说到,害得我注册好字体后怎么试都不成功,生成的PDF就是不能正常显示日文。后来想想修改后的配置文件没有用到,到网上查了一下才知道那里要修改一下,增加-c参数,我狂晕~~~~~。

要验证你的日文是否被正确显示,针对FO文件需要修改以下地方有:

原:

line-height="30pt">

Hello~kaegunテスト

现:

line-height="30pt">

Hello~kaegunテスト

如果你是用XML+XSLT的方式成生PDF,则要修改xsl文件

原:

font-family="serif"

line-height="24pt"

space-after.optimum="15pt"

background-color="blue"

color="white"

text-align="center"

padding-top="3pt">

现:

font-family="Gothic"

line-height="24pt"

space-after.optimum="15pt"

background-color="blue"

color="white"

text-align="center"

padding-top="3pt">

经过上述操作后,用新的批处理命令即可生成能正确显示日文的PDF文件了。

java fop_XSL-FO 和FOP相关技术详解(转载)相关推荐

  1. java配置文件实现方式_java相关:详解Spring加载Properties配置文件的四种方式

    java相关:详解Spring加载Properties配置文件的四种方式 发布于 2020-4-29| 复制链接 摘记: 一.通过 context:property-placeholder 标签实现配 ...

  2. java反射源码_java反射技术详解附源码

    在学校学习Java时,由于学的不扎实,也没经历过太多实战项目,所以很多重要的知识点瞟一眼就过去了,比如现在要讲的反射,当时直接就忽略掉了,可现在发现很多地方需要反射,不得不重新学习一下,上学欠了太多债 ...

  3. [ 云原生之谜 ] 云原生背景 定义 相关技术详解?

  4. 一对一直播软件源码开发,直播相关技术详解

    一对一直播软件源码中直播流程图 一.数据采集 通过一对一直播软件源码移动设备的端麦克风摄像头采集音视频数据. 视频采集 AVCaptureDevice 前后摄像头作为视频源生成输入 AVCapture ...

  5. java技术详解_Java反射技术详解及实例解析

    前言 相信很多人都知道反射可以说是Java中最强大的技术了,它可以做的事情太多太多,很多优秀的开源框架都是通过反射完成的,比如最初的很多注解框架,后来因为java反射影响性能,所以被运行时注解APT替 ...

  6. java mysbatis select_java相关:详解Mybatis中的select方法

    java相关:详解Mybatis中的select方法 发布于 2020-7-3| 复制链接 摘记: selectById方法根据id,查询记录 ```java public void updateRe ...

  7. java 李刚 pdf_Java数据库技术详解(李刚) PDF_源雷技术空间

    资源名称:Java数据库技术详解(李刚) PDF 第一篇 数据库基础篇 第1章 Java和数据库 2 1.1 Java概述 2 1.1.1 跨平台性 2 1.1.2 面向对象 2 1.1.3 安全性 ...

  8. JAVA算法:回文字符串相关问题详解(回文字符串总结)

    JAVA算法:回文字符串相关问题详解(回文字符串总结) Q1. 编写一个工具方法判断给定的字符串是否为回文字符串 例如:给定一个字符串"aabbaa",判断该字符串是否为回文字符串 ...

  9. java 编程 pdf linux_Linux编程技术详解.pdf

    Linux编程技术详解全面介绍了linux编程相关的知识,内容涵盖linux基本知识.如何建立linux开发环境.linux开发工具.linux文件系统.文件i/o操作.设备文件.进程与进程环境.守护 ...

  10. java canvas详解_HTML5的canvas绘图技术详解

    原标题:HTML5的canvas绘图技术详解 本篇教程探讨了HTML5的canvas绘图技术详解,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 . < canvas ...

最新文章

  1. [原创]商城系统下单库存管控系列杂记(二)(并发安全和性能部分延伸)
  2. java的HttpClient如何去支持无证书访问https
  3. QT判断操作系统版本
  4. java 内存屏障类型_Java内存模型精讲
  5. 将SQL Server查询导出本地excel(mail发送)
  6. 腾讯计费:亿万级大促活动自动化保障体系
  7. 数据库---练习题(45道)
  8. 多年经验的程序员迷失了自己,该怎么办?
  9. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(一)让物体动起来①
  10. CSS3 背景裁剪区域 background-clip属性
  11. 如何在C#中使用反射获取集合元素类型
  12. 列举python的数据类型_Python的数据类型
  13. 多目标跟踪数据集 :mot16、mot17数据集介绍
  14. 体检信息管理系统功能表
  15. matlab实现将彩色图像转换成灰色图像的方法
  16. win7 快速启动栏 里的快捷方式存放路径
  17. 怎么下载高清无水印的视频号作品?视频号下载要用什么工具?1分钟解决微信视频号下载
  18. 华为云服务器系统备份,云服务器备份系统
  19. JAVA之socket编程服务器与客户端通信--实现简易聊天室
  20. 【MQTT】SpringBoot整合MQTT(EMQX)

热门文章

  1. 全球与中国太阳能并网逆变器市场深度研究分析报告
  2. 【帧率倍频】基于FPGA的视频帧率倍频系统verilog开发实现
  3. shiro安全性框架
  4. 阿里史上最大规模校招,进大厂的机会来啦!!!
  5. vue 通过 Ctrl 、Shift 键 + 点击鼠标实现 div 多选操作
  6. java如何使用barcode4j生成条形码_JAVA条形码生成组件barcode4j使用
  7. Sql中的offset 用法
  8. Python每天练习——小程序006
  9. 枪林弹雨 该服务器维护中,枪林弹雨登陆BUG解决方法
  10. 计算机磁盘管理看不到盘符,Win10系统本地磁盘盘符不见了的解决方法