首先,我对xsl了解不多。
我正在使用一个名为dita的应用程序生成pdf。它需要做的一件事是覆盖xsl文件;添加自定义样式。
我正在尝试使用相对路径添加外部图形。它不起作用,除非我提供完整的路径。
不起作用:

<fo:block text-align="center" width="100%">
  <fo:external-graphic src="../../images/logo.png"/>
</fo:block>

工作:
<fo:block text-align="center" width="100%">
  <fo:external-graphic src="/absolute/path/to/images/logo.png"/>
</fo:block>

我在网上看了一下,上面说用的是“file:image.png”,其他网站说用的是“url(image.png)”,但都没用。
我做错什么了?

最佳答案

这是一个古老的问题,但是在使用DITA-OT时经常会被误解。
重要的是要知道外部图形路径是相对于dita-ot artwork.dir的。
我可以想出两种方法来添加徽标。
简单的方法
将logo.png复制到arwork目录中

DITA-OT/demo/fo/cfg/common/artwork/logo.png

将xsl图形路径更改为
<fo:block text-align="center" width="100%">
  <fo:external-graphic src="Configuration/OpenTopic/cfg/common/artwork/logo.png"/>
</fo:block>

更艰难的道路
可以更改dita从中获取图片的Artwork目录以及fop用来呈现pdf的输出目录。
打开build.xml文件
DITA-OT/demo/fo/build.xml

艺术品根
定义DITA将艺术品复制到的根目录
默认值是
<property name="artwork.dir" value="${dita.map.output.dir}"/>

它会将根设置为保存最终pdf的位置。
艺术品目的地
定义文件相对于Artwork根目录的存储路径
<copy todir="${coreArtworkDestinationDir}/Configuration/OpenTopic"

默认情况下,它将创建文件夹/Configuration/OpenTopic,然后复制其中的所有内容,包括子目录。
确保更改两次目的地。你要编辑的两个地方只有几行之隔。
艺术品来源
定义原始艺术品的保存位置,以便DITA-OT可以将文件复制到目的地。
第一行指向DITA-OT附带的默认艺术作品,不应更改。
<fileset dir="${basedir}" includes="cfg/common/artwork/**/*.*"/>

第二个用于定制,因此应该用于定制。
<fileset dir="${customization.dir}" includes="common/artwork/**/*.*"/>

路径是相对于dita-ot/demo/fo/customization的。

07-26 02:07