使用 XSL-FO 进行 PDF 验证时,“使用了没有适当输出意图的特定于设备的颜色空间 (DeviceGray)”

问题描述

我被要求使用 XSL-FO 和 Apache FOP 配置生成 A-3 类型的 PDF。 PDF 已生成但无法验证

错误:使用了没有适当输出意图的特定于设备的颜色空间 (DeviceGray)。

我认为这个问题与 FOP 配置有关,这是我使用的:

<fop version="1.0">

  <!-- Base URL for resolving relative URLs -->
  <base>.</base>
  
  <!-- Source resolution in dpi (dots/pixels per inch) for determining the size of pixels in SVG and bitmap images,default: 72dpi -->
  <source-resolution>72</source-resolution>
  <!-- Target resolution in dpi (dots/pixels per inch) for specifying the target resolution for generated bitmaps,default: 72dpi -->
  <target-resolution>72</target-resolution>
  
  <!-- Default page-height and page-width,in case
       value is specified as auto -->
  <default-page-settings height="11in" width="8.26in"/>
  
  <!-- information for specific renderers -->
  <!-- Uses renderer mime type for renderers -->
  <renderers>
    <renderer mime="application/pdf">
    
      <version>1.4</version>
      <filterList>
        <!-- provides compression using zlib flate (default is on) -->
        <value>flate</value>
       
      </filterList>

      <fonts>
       
    <font embed-url="ZapfDingbats.ttf" kerning="yes" sub-font="ZapfDingbats">
        <font-triplet name="ZapfDingbats" style="normal" weight="normal"/>
        <font-triplet name="ZapfDingbats" style="normal" weight="bold"/>
    </font>
    <font embed-url="symbol.ttf" kerning="yes" sub-font="Symbol">
        <font-triplet name="Symbol" style="normal" weight="normal"/>
        <font-triplet name="Symbol" style="normal" weight="bold"/>
    </font>

    
        <font metrics-url="ariali.xml" kerning="yes" embed-url="ariali.ttf" embedding-mode="full">
          <font-triplet name="Arial" style="italic" weight="normal"/>
        </font>
        <font metrics-url="arial.xml" kerning="yes" embed-url="arial.ttf" embedding-mode="full">
          <font-triplet name="Arial" style="normal" weight="normal"/>
        </font>
        <font metrics-url="arialbd.xml" kerning="yes" embed-url="arialbd.ttf" embedding-mode="full">
          <font-triplet name="Arial" style="normal" weight="bold"/>
        </font>
        
      </fonts>
    
    </renderer>

    <renderer mime="application/postscript">
     
    </renderer>

    <renderer mime="application/vnd.hp-PCL">
    </renderer>

    <renderer mime="image/svg+xml">
      <format type="paginated"/>
      <link value="true"/>
      <strokeText value="false"/>
    </renderer>

    <renderer mime="application/awt">
    </renderer>

    <renderer mime="image/png">
      <!--transparent-page-background>true</transparent-page-background-->
    </renderer>

    <renderer mime="image/tiff">
      <!--transparent-page-background>true</transparent-page-background-->
      <!--compression>CCITT T.6</compression-->
    </renderer>

    <renderer mime="text/xml">
    </renderer>

    <!-- RTF does not have a renderer
    <renderer mime="text/rtf">
    </renderer>
    -->

    <renderer mime="text/plain">
      <pageSize columns="80"/>
    </renderer>

  </renderers>

</fop>

解决方法

阅读 Apache FOP 配置,您将需要在 pdf 渲染器 filterList 中指定的输出颜色空间,例如:

 <output-profile>C:\FOP\Color\EuropeISOCoatedFOGRA27.icc</output-profile>

https://xmlgraphics.apache.org/fop/1.1/configuration.html

当然,您需要为您的应用程序选择合适的“.icc”文件。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...