`

搭建FO转PDF环境

 
阅读更多

熬到半夜,终于整出来了。

 

第一步,引入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

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    f16manual.pdf Nonlinear F-16 Model Description

    本手册提供了F-16战斗机非线性模型的详尽描述,涵盖了从动力学模型公式到仿真系统搭建所需的所有细节,是进行F-16飞行仿真研究的必备资料。文档由Delft大学航空航天工程学院的控制与仿真部门的L. Sonneveldt编写,于...

    RZ7899双路直流驱动芯片原理图.docx

    - **电机正转**:A1为高电平,A2为低电平,FO输出高电平,BO输出低电平。 - **电机反转**:A1为低电平,A2为高电平,FO输出低电平,BO输出高电平。 - **电机停转**:A1为低电平,A2为低电平,FO和BO均处于高阻状态。...

    Apache Cocoon V2.1.4

    Cocoon V2.1.4是该项目的一个稳定版本,它基于W3C(World Wide Web Consortium)的开放标准,如XSLT(Extensible Stylesheet Language Transformations)、XPath(XML Path Language)和XSL-FO(XSL Formatting ...

    模拟电子技术课程设计报告(正弦波、方波—三角波波形发生器).pdf

    总之,模拟电子技术课程设计是一个综合性的学习过程,涵盖了电路理论、元件选择、电路搭建、信号分析等多个方面,旨在培养学生的实践技能和创新能力,为未来从事电子技术领域的工作打下坚实基础。

    精通DotNetNuke4 Asp.net 2.0开源WEB应用程序框架

    读者将学习如何快速搭建一个运行中的DotNetNuke站点,以及如何管理站点的基本设置,如用户、角色和权限。 接下来,书中会详细探讨DotNetNuke的模块化开发。模块是DotNetNuke的核心组件,它们是可重用的代码单元,...

    jeesite依赖包

    Jeesite使用H2作为默认的开发数据库,提供快速的数据库环境搭建。 综上所述,Jeesite依赖包中的每个组件都扮演着至关重要的角色,共同构建了一个强大而全面的企业级应用框架。理解这些组件的功能和相互作用,对于...

    Oracle XML Publisher技巧集锦.docx

    - **环境搭建**:确保安装了兼容版本的Oracle EBS以及XMLP相关组件。 - **软件安装**:安装所需的开发工具,如Microsoft Word等。 - **权限配置**:设置必要的用户权限以便访问和使用XMLP功能。 ##### 1.5 最简单的...

    BUCK降压电路系统设计-电路方案

    "Fn9HREfcXBKuhnCNcH_SevaOb99h.png"和"Fo65zxK_VznRzo1Zp3CXuy6AyD1w.png"可能是电路原理图的截图,用于展示各组件之间的连接和信号路径,帮助理解实际电路布局。"BUCK电路原理图.pdf"很可能是完整的原理图文件,...

    使用Arduino的大型实时时钟-项目开发

    7. **PDF文档**: "big-real-time-clock-using-arduino-c14da0.pdf"可能包含项目的完整指南,包括硬件选择、电路搭建、代码解释以及故障排查等内容,是了解项目全貌的重要参考资料。 8. **编程语言**: Arduino通常...

    如何使文本/标签在Windows窗体上滚动。

    为了更深入地学习这个主题,可以参考提供的压缩包文件 "How-to-make-the-text-label-to-scroll-on-windows-fo.pdf",其中应该包含了详细的步骤和示例代码,帮助你理解和实现文本/标签在Windows窗体上的滚动效果。...

    RC推力测功机-项目开发

    1. FO7JCG1II7F1W5X.bmp:这可能是一个图像文件,展示了RC推力测功机的实物图、测试结果或相关的数据图表。 2. bluetooth_rc_dyno_ino.ino:这是一个使用蓝牙模块进行无线数据传输的Arduino代码文件。通过这个代码,...

    德州仪器AM335X 官方DEMO原理图/PCB分享-电路方案

    1. "AM335X_bottomDEMO V1.3.pdf":这可能是一个关于AM335X开发板的详细说明文档,可能包含DEMO板的设计概述、功能介绍、电路原理图以及版本更新历史等内容。 2. "Fo35sN35QVhrjJnUMGgLhwsrvDzN.png":这是一个图像...

Global site tag (gtag.js) - Google Analytics