熬到半夜,终于整出来了。
第一步,引入fo-1.0.jar
<dependency> <groupId>org.apache.xmlgraphics</groupId> <artifactId>fop</artifactId> <version>1.0</version> </dependency>
第二步,编写1个测试fo,暂且叫做test01.xml
Eclipse中配置外部dtd的方法,见ws-JAX中关于dtd的那篇文章
<?xml version="1.0" encoding="UTF-8"?> <!-- 引入dtd,提供提示功能 --> <!DOCTYPE xsl-fo SYSTEM "fo.dtd"> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="LetterPage"> <fo:region-body region-name="PageBody"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="LetterPage"> <fo:flow flow-name="PageBody" font-family="Microsoft YaHei" font-size="24pt"> <fo:block>Hello XSL-FO! 成功!</fo:block> </fo:flow> </fo:page-sequence> </fo:root>
第三步,引入字体,FOP默认提供的字体没得搞,不支持中文的。
以微软雅黑为例,该字体可以从windows/fonts目录中拷贝。
将fop.xconf配置放到java/main/resources目录下
并在java/main/resources目录下新建1个fonts目录
将windows/fonts目录下的需要的字体拷贝到resources/fonts目录中
打开fop.xconf文件,将微软雅黑字体配置进去
采用最简单的方法,提供1个字体目录,让fop到此目录下找需要的字体
注意:
fop配置文件中有一个相对路径的默认配置<base>.</base>
该路径指向的是项目的根目录,所以在指定字体目录时,是参考根目录写相对路径的
而不是文档中所描述的:Relative config url's will be resolved relative to the location of this file.
<renderer mime="application/pdf"> <filterList> <!-- provides compression using zlib flate (default is on) --> <value>flate</value> </filterList> <fonts> <directory>src/main/resources/fonts</directory> </fonts> <!-- This option lets you specify additional options on an XML handler --> <!--xml-handler namespace="http://www.w3.org/2000/svg"> <stroke-text>false</stroke-text> </xml-handler--> </renderer> .....
第四步,在程序中指定fop.xconf文件的位置,让fop在渲染时根据这个配置文件进行读取字体。
String path = PdfApplication.class.getClassLoader().getResource("fop.xconf").getPath(); fopFactory.setUserConfig(path);
第五步,运行程序,不出意外,将生成期待已久的PDF!
补充:
如果使用DTD校验fo,则引入其它命名空间会报错!
使用apache提供的xsd对fo进行校验,再引入thymeleaf的命名空间就不报错了。
附件中的几个文件的说明:
xconf is font character setting file
dtd is provided by RenderX
xsd is provided by apache FOP
相关推荐
本手册提供了F-16战斗机非线性模型的详尽描述,涵盖了从动力学模型公式到仿真系统搭建所需的所有细节,是进行F-16飞行仿真研究的必备资料。文档由Delft大学航空航天工程学院的控制与仿真部门的L. Sonneveldt编写,于...
- **电机正转**:A1为高电平,A2为低电平,FO输出高电平,BO输出低电平。 - **电机反转**:A1为低电平,A2为高电平,FO输出低电平,BO输出高电平。 - **电机停转**:A1为低电平,A2为低电平,FO和BO均处于高阻状态。...
Cocoon V2.1.4是该项目的一个稳定版本,它基于W3C(World Wide Web Consortium)的开放标准,如XSLT(Extensible Stylesheet Language Transformations)、XPath(XML Path Language)和XSL-FO(XSL Formatting ...
总之,模拟电子技术课程设计是一个综合性的学习过程,涵盖了电路理论、元件选择、电路搭建、信号分析等多个方面,旨在培养学生的实践技能和创新能力,为未来从事电子技术领域的工作打下坚实基础。
读者将学习如何快速搭建一个运行中的DotNetNuke站点,以及如何管理站点的基本设置,如用户、角色和权限。 接下来,书中会详细探讨DotNetNuke的模块化开发。模块是DotNetNuke的核心组件,它们是可重用的代码单元,...
Jeesite使用H2作为默认的开发数据库,提供快速的数据库环境搭建。 综上所述,Jeesite依赖包中的每个组件都扮演着至关重要的角色,共同构建了一个强大而全面的企业级应用框架。理解这些组件的功能和相互作用,对于...
- **环境搭建**:确保安装了兼容版本的Oracle EBS以及XMLP相关组件。 - **软件安装**:安装所需的开发工具,如Microsoft Word等。 - **权限配置**:设置必要的用户权限以便访问和使用XMLP功能。 ##### 1.5 最简单的...
"Fn9HREfcXBKuhnCNcH_SevaOb99h.png"和"Fo65zxK_VznRzo1Zp3CXuy6AyD1w.png"可能是电路原理图的截图,用于展示各组件之间的连接和信号路径,帮助理解实际电路布局。"BUCK电路原理图.pdf"很可能是完整的原理图文件,...
7. **PDF文档**: "big-real-time-clock-using-arduino-c14da0.pdf"可能包含项目的完整指南,包括硬件选择、电路搭建、代码解释以及故障排查等内容,是了解项目全貌的重要参考资料。 8. **编程语言**: Arduino通常...
为了更深入地学习这个主题,可以参考提供的压缩包文件 "How-to-make-the-text-label-to-scroll-on-windows-fo.pdf",其中应该包含了详细的步骤和示例代码,帮助你理解和实现文本/标签在Windows窗体上的滚动效果。...
1. FO7JCG1II7F1W5X.bmp:这可能是一个图像文件,展示了RC推力测功机的实物图、测试结果或相关的数据图表。 2. bluetooth_rc_dyno_ino.ino:这是一个使用蓝牙模块进行无线数据传输的Arduino代码文件。通过这个代码,...
1. "AM335X_bottomDEMO V1.3.pdf":这可能是一个关于AM335X开发板的详细说明文档,可能包含DEMO板的设计概述、功能介绍、电路原理图以及版本更新历史等内容。 2. "Fo35sN35QVhrjJnUMGgLhwsrvDzN.png":这是一个图像...