`
wangxc
  • 浏览: 210516 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

fop中文配置 (windows和Ubuntu)操作系统

    博客分类:
  • fop
阅读更多
windows操作系统的配置

下载fop-0.95压缩包,以支持windows的Simhei和Simsun为例,列出将fo文件转为pdf的整个过程

步骤1: 生成字体相关的xml文件simhei.xml和simsun.xml

java -cp java -cp build\fop.jar;  lib\avalon-framework-4.2.0.jar;lib\batik-all-1.7.jar;lib \commons-logging-1.0.4.jar;lib\commons-io-1.3.1.jar;lib\serializer-2.7.0.jar;lib\xalan-2.7.0.jar;lib\xercesImpl-2.7.1.jar;lib\xml-apis-1.3.04.jar;lib\xml-apis-ext-1.3.04.jar;lib\xmlgraphics-commons-1.3.1.jar org.apache.fop.fonts.apps.TTFReader
注意:下载的fop压缩包不同,lib目录下的各jar名也不同,请大家改为自己的jar名
C:\WINDOWS\Fonts\simhei.ttf D:\fop\conf\simhei.xml
java -cp build\fop.jar;  lib\avalon-framework-4.2.0.jar;lib\batik-all-1.7.jar;lib \commons-logging-1.0.4.jar;lib\commons-io-1.3.1.jar;lib\serializer-2.7.0.jar;lib\xalan-2.7.0.jar;lib\xercesImpl-2.7.1.jar;lib\xml-apis-1.3.04.jar;lib\xml-apis-ext-1.3.04.jar;lib\xmlgraphics-commons-1.3.1.jar
org.apache.fop.fonts.apps.TTFReader -ttcname "SimSun" C:\WINDOWS\Fonts\simsun.ttc D:\fop\conf\simsun.xml


步骤1操作完成,检查一下你的simhei.xml和simsun.xml有没有生成成功

步骤2:修改用户定义文件,在解压FOP包的目录下conf创建config.xml,文件内容修改为:

<?xml version="1.0"?> 
<fop version="1.0"> 
<base>.</base> 
   <renderers> 
    <renderer mime="application/pdf"> 
      <filterList> 
         <value>flate</value> 
     </filterList> 
      <fonts>   
        <font metrics-url="file:///D:\fop\conf\simhei.xml" kerning="yes" embed-url="file:///c:\windows\fonts\simhei.ttf"> 
          <font-triplet name="simhei" style="normal" weight="normal"/>
          <font-triplet name="simhei" style="normal" weight="bold"/>
          <font-triplet name="simhei" style="italic" weight="normal"/>
          <font-triplet name="simhei" style="italic" weight="bold"/>
          </font> 
          <font metrics-url="file:///D:\fop\conf\simsun.xml" kerning="yes" embed-url="file:///c:\windows\fonts\simsun.ttc"> 
          <font-triplet name="simsun" style="normal" weight="normal"/>
          <font-triplet name="simsun" style="normal" weight="bold"/>
          <font-triplet name="simsun" style="italic" weight="normal"/>
          <font-triplet name="simsun" style="italic" weight="bold"/>
          </font> 
        </fonts> 
    </renderer> 
</renderers> 
</fop>   


注意:file:/// 路径要写对


步骤3:修改相应的xsl文件,应用上Simsun字体。在相应的节点上添加字体属性font-family="Simsun" ,例如创建文件simplecn.fo,文件内容修改为:

<?xml version="1.0" encoding="utf-8"?> 
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
  <fo:layout-master-set> 
    <fo:simple-page-master master-name="simple" 
        page-height="29.7cm" 
        page-width="21cm" 
        margin-top="1cm" 
        margin-bottom="2cm" 
        margin-left="2.5cm" 
        margin-right="2.5cm"> 
      <fo:region-body margin-top="3cm"/> 
      <fo:region-before extent="3cm"/> 
      <fo:region-after extent="1.5cm"/> 
    </fo:simple-page-master> 
  </fo:layout-master-set> 
  <fo:page-sequence master-reference="simple"> 
    <fo:flow flow-name="xsl-region-body"> 
      <fo:block font-size="18pt" 
          font-family="simsun" 
          line-height="24pt" 
          text-align="center" 
          padding-top="3pt"> 
        这是宋体 
      </fo:block> 
      <fo:block font-size="18pt" 
          font-family="simhei" 
          line-height="24pt" 
          text-align="center" 
          padding-top="3pt"> 
        这是黑体 
      </fo:block> 
    </fo:flow> 
  </fo:page-sequence> 
</fo:root> 


步骤4:将XML转为PDF,执行如下:
fop -c conf/config.xml -fo test/simplecn.fo -pdf pdf/simplecn.pdf

操作结束!


ubuntu下的中文配置:
环境: Ubuntu desktop 9.04
sudo apt-get install docbook-xml docbook-xsl xsltproc fop

下载simsun.ttc和simhei.ttf
sudo apt-get install docbook-xml docbook-xsl xsltproc fop

sudo mkdir -p /etc/fop/font
sudo cp simsun.ttc /etc/fop/font
sudo cp simhei.ttf /etc/fop/font

生成simsun.xml和simhei.xml文件
sudo fop-ttfreader /etc/fop/font/simsun.ttc /etc/fop/simsun.xml -ttcname SimSun
sudo fop-ttfreader /etc/fop/font/simhei.ttf /etc/fop/simhei.xml

分别为simsun和simhei字体生成Metrics文件
sudo fop-ttfreader -ttcname SimSun /etc/fop/font/simsun.ttc /etc/fop/simsun.xml
sudo fop-ttfreader -ttcname SimHei /etc/fop/font/simhei.ttf /etc/fop/simhei.xml

从FOP包里取出fop.xconf文件并cp到 /etc/fop下,修改这个文件,在<fonts></fonts>间加入如下内容:
<fonts>
<font metrics-url="file:///etc/fop/simsun.xml" kerning="yes" embed-url="file:///etc/fop/font/simsun.ttc">
<font-triplet name="SimSun" style="normal" weight="normal"/>
<font-triplet name="SimSun" style="normal" weight="bold"/>

<font-triplet name="SimSun" style="italic" weight="normal"/>
<font-triplet name="SimSun" style="italic" weight="bold"/>
</font>

<font metrics-url="file:///etc/fop/simhei.xml" kerning="yes" embed-url="file:///etc/fop/font/simhei.ttf">
<font-triplet name="SimHei" style="normal" weight="normal"/>
<font-triplet name="SimHei" style="normal" weight="bold"/>

<font-triplet name="SimHei" style="italic" weight="normal"/>
<font-triplet name="SimHei" style="italic" weight="bold"/>
</font>

<directory recursive="true">/usr/share/fonts/</directory>
<auto-detect/>
</fonts>

在/etc/fop下创建一个样式表fop.xsl:
<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:ng="http://docbook.org/docbook-ng"
xmlns:db="http://docbook.org/ns/docbook"
exclude-result-prefixes="db ng exsl"
version='1.0'>

<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/fo/docbook.xsl"/>
<xsl:param name="body.font.family">SimSun</xsl:param>
<xsl:param name="monospace.font.family">SimSun</xsl:param>
<xsl:param name="title.font.family">SimHei</xsl:param>

</xsl:stylesheet>


输出pdf文件:
test.xml还是拿docbook的那个文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://docbook.org/xml/4.2/docbookx.dtd">
<article>
<title>My first Docbook document</title>
<sect1>
<title>The greeting</title>
<para>
测试中文显示!
</para>
</sect1>
</article>

sudo xsltproc -o test.fo fop.xsl test.xml
sudo fop -c /etc/fop/fop.xconf test.fo -pdf test.pdf

查看你的fop目录下有一个test.pdf打开就可以看到"测试中文显示!"文字了。


  
分享到:
评论
3 楼 newlikeda 2011-10-14  
C:\WINDOWS\Fonts\         
2 楼 f002489 2011-05-30  
<renderer mime="application/x-afp"> 这个节点,ubuntu配置过没?
也是中文问题,pdf汉字显示为#::

:49:20 org.apache.fop.events.LoggingEventListener processEvent
警告: Glyph "测" (0x6d4b) not available in font "Times-Roman".
1 楼 f002489 2011-05-25  
thanks, share...

相关推荐

    fop转pdf中文字体配置文件

    在IT行业中,生成PDF文档是常见的需求,尤其是在报表生成、文档输出...理解这些步骤和相关概念对于在FOP中成功呈现中文文档至关重要。通过以上介绍,你应该能更好地应对这一挑战,并为你的项目提供流畅的中文PDF输出。

    fop 1.0beta2 解决了中文问题

    而FOP 1.0beta2通过优化字体检测和使用机制,能够更轻松地利用操作系统的内置字体,无需用户进行复杂的配置,从而解决了中文显示的问题。 DocBook是一种XML文档标记语言,常用于编写技术文档,包括手册、教程、参考...

    fop0.94中文问题原码.zip

    - 确保系统中有适合显示中文的字体,如simsun.ttc,这是Windows系统中常用的简体中文TrueType字体。 - 配置FOP以使用这些字体。这可能涉及到创建或修改字体配置文件(如simsun.xml),并在其中指定字体名称、编码等...

    fop1.1相关资源

    2. **FOP的安装与配置**:下载fop-1.1的bin包后,解压到本地目录,通常包含`fop.bat`(Windows)或`fop.sh`(Unix/Linux)脚本,用于执行转换操作。用户需要配置环境变量,或者直接在命令行中指定FOP可执行文件的...

    fop1.0及依赖jar包

    FOP 1.0是该项目的早期版本,尽管现在已经有了更新的版本,但仍然有一些用户可能需要这个版本来兼容旧系统或特定需求。 FOP 1.0的核心功能在于它实现了W3C的XSL-FO标准,这个标准允许开发者用XML来描述文档的布局和...

    Apache FOP fop-1.1rc1-bin

    使用fop-1.1rc1-bin压缩包,你需要解压后找到bin目录下的`fop.bat`或`fop.sh`执行文件,根据操作系统选择合适的启动方式。通常,转换过程涉及以下步骤: 1. 创建XSL-FO输入文件。 2. 使用FOP命令行工具指定输入文件...

    Apache FOP 1.0-bin

    这个“Apache FOP 1.0-bin”压缩包包含了FOP 1.0版本的可执行文件和其他必要的资源,用于在各种操作系统上运行和处理PDF转换任务。 XSL-FO是一种基于XML的标记语言,它定义了如何将结构化数据转换为呈现格式,如PDF...

    XML转PDF的FOP包和代码

    3. **配置和定制**:FOP允许用户自定义字体、颜色、页面大小等,以满足特定的PDF生成需求。这通常通过配置文件或编程API实现。 4. **整合到项目**:在实际开发中,你可能需要将FOP集成到Java应用、Web应用或其他...

    FOP高级技术文档.rar

    2. **FOP配置与安装**:学习如何下载和配置Apache FOP,以及设置环境变量和命令行参数。 3. **XSL-FO语法**:熟悉XSL-FO的各种元素和属性,如`&lt;fo:block&gt;`、`&lt;fo:table&gt;`、`&lt;fo:image&gt;`等,以及如何使用它们来控制...

    fop-2.4_cn.zip

    在处理中文文档时,FOP 2.4提供了更好的字形渲染和字符集支持。 3. **中文字体支持**:这个版本特别包含了微软雅黑、宋体、黑体、楷体、仿宋和隶书这六种常见的中文字体。这些都是中文排版中不可或缺的基础字体,...

    FOP相关资源及JAR包共享

    4. **配置与集成**:将FOP JAR包添加到Java项目的类路径中,然后通过代码调用API进行转换操作。 5. **命令行使用**:除了API,FOP也可以通过命令行界面使用,方便快速测试和生成输出。 6. **错误处理与调试**:在...

    Apache Fop1.0 Pdf demp

    2. **FOP的安装与配置**: 首先,你需要下载Apache Fop1.0的二进制包,解压后将其添加到系统路径或者项目依赖中。根据Java环境的不同,可能需要配置相应的类路径。 3. **使用Java API**: 在Java程序中,你可以使用...

    fop生成PDF

    FOP通过内建的字体支持和适当的配置,可以处理多种语言的文本,包括复杂的汉字排版。 接下来,我们探讨一下实现这个功能的具体步骤: 1. **准备XML数据**:首先,你需要一个包含数据的XML文件。XML文件应该按照...

    Apache-fop

    3. **运行FOP**:调用FOP的Java API或命令行工具,传入XSL-FO文件和配置信息,生成目标格式的输出文件。 4. **处理结果**:检查生成的文件,进行必要的调整和优化。 在实际应用中,Apache FOP常被集成到XML工作流...

    fop-0.20.5.jar

    6. **模板设计**:开发者可以使用XSL-FO语言编写模板,以控制输出文档的布局和样式,而无需深入学习复杂的排版系统。 7. **自定义扩展**:FOP允许用户通过插件机制扩展其功能,比如添加新的字体或图像处理功能。 8...

    fop.jar

    fop.jar

    FOP PDF作成手順、例子

    FOP安装与配置** 首先,你需要从Apache官方网站下载最新版本的FOP并解压。接着,将FOP的bin目录添加到系统环境变量PATH中,这样就可以在命令行中直接调用fop命令了。 **3. 创建XSL-FO文件** 一个基本的XSL-FO文件...

    fop转pdf依赖的jar包

    `xml-apis-1.3.04.jar`和`xml-apis-ext-1.3.04.jar`是XML API的实现,它们提供了处理XML的基本接口和类,是解析和操作XML文档的必要组件。 `serializer-2.7.0.jar`包含了XML序列化相关的类,用于将XML树结构输出为...

Global site tag (gtag.js) - Google Analytics