使用fop 1.1打印时获取空白页

时间:2013-06-03 16:52:35

标签: java printing apache-fop

使用fop1.1,我正在尝试使用本节中讨论的中间文件方法打印文档fop intermediate format

问题是它在第3步中打印了一个空白页。

这是我用于测试的FO文件:

    <?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fox="http://xml.apache.org/fop/extensions">
   <fo:layout-master-set>
      <fo:simple-page-master master-name="all" page-height="5.4cm" page-width="9.56cm" margin-top="0cm" margin-bottom="0cm" margin-left="0cm" margin-right="0cm">
         <fo:region-body margin-top="0cm" margin-bottom="0cm" background-color="transparent" />
      </fo:simple-page-master>
   </fo:layout-master-set>
   <fo:page-sequence master-reference="all">
      <fo:flow flow-name="xsl-region-body">
         <fo:block>
            <fo:block-container absolute-position="absolute" top="5px" left="11px" height="30px" width="300px" overflow="hidden">
               <fo:block font-weight="normal" font-style="italic" font-family="Arial">852147</fo:block>
            </fo:block-container>
            <fo:block-container absolute-position="absolute" top="50px" left="10px" height="30px" width="300px" overflow="hidden">
               <fo:block font-weight="bold" font-style="normal" font-family="Arial" font-size="10pt">nabil</fo:block>
            </fo:block-container>
            <fo:block-container absolute-position="absolute" top="100px" left="10px" height="30px" width="300px" overflow="hidden">
               <fo:block font-weight="bold" font-style="normal" font-family="Arial" font-size="10pt">madara</fo:block>
            </fo:block-container>
         </fo:block>
      </fo:flow>
   </fo:page-sequence>
</fo:root>

配置文件

<?xml version="1.0"?>
<!-- $Id: fop.xconf 1339442 2012-05-17 01:42:56Z gadams $ -->



<!-- NOTE: This is the version of the configuration -->
<fop version="1.1">
<fonts>
      <auto-detect/>
      </fonts>

<!-- Strict user configuration -->
  <strict-configuration>true</strict-configuration>

  <!-- Strict FO validation -->
  <strict-validation>true</strict-validation>

  <!-- Base URL for resolving relative URLs -->
  <base>.</base>

  <!-- Font Base URL for resolving relative font URLs -->
  <font-base>./</font-base>


  <source-resolution>72</source-resolution>

  <target-resolution>72</target-resolution>


  <default-page-settings height="11in" width="8.26in"/>


 <renderers>
    <renderer mime="application/pdf">
      <filterList>
        <!-- provides compression using zlib flate (default is on) -->
        <value>flate</value>



      </filterList>

      <fonts>
      <auto-detect/>

      </fonts>


    </renderer>
</renderers>

</fop>
步骤:

  1. fop -c cfg.xml -fo myfile.fo -at application/pdf myfile.at.xml
  2. fop -c cfg.xml -atin myfile.at.xml -pdf myfile.pdf(正确生成pdf文件)
  3. fop -atin myfile.at.xml -print(使用pdf创建者打印空白页)

1 个答案:

答案 0 :(得分:3)

在FOP 1.1中,AWT渲染器(打印渲染器使用AWT渲染器)似乎存在问题。我尝试使用以下内容作为第3步:

fop -atin myfile.at.xml -awt

我注意到了相同的结果 - 一个空白页面。 (注意:要使AWT渲染在Windows上运行,您需要编辑fop.bat以便-Djava.awt.headless=false)。

我发现奇怪的是没有错误记录到控制台,我找不到FOP的JIRA实例中报告的任何错误。所以我决定玩FOP 1.0。

解决方法 - 下载FOP 1.0而不是FOP 1.1。使用以下作为第3步

fop -atin myfile.at.xml -print all

注意: 所有参数用于打印所有页面。省略此参数在1.0中失败,但已在1.1中修复。

希望以上是一个可行的解决方案!看起来好像FOP 1.1和AWT渲染器存在未解决/未报告的问题。 :(