最新消息:VPS服务器又从fzhost.net换回Linode了,主题仍用朋友推荐的大前端D8

【已解决】docbook最后生成pdf的时候出错:严重: Image not found. URI: xxx.png. (See position xxx)

Docbook crifan 820浏览 0评论

【问题】

docbook,已经用xsltproc生成好了fo文件,然后用fop将fo转换为pdf,之前一直都是正常的,但是经过折腾关于如何让revhistory在pdf中显示的功能之后,虽然解决了该问题,但是结果却会出错:

Administrator@K470 ~
$ E:/Dev_Root/docbook/config/tool/fop/fop-1.0/fop.cmd -c E:/Dev_Root/docbook/config/tool/fop/fop-1.0/conf/fop.xconf E:/Dev_Root/docbook/dev/src/docbook/books/VBR/output/fo/MPEG_VBR.fo -pdf E:/Dev_Root/docbook/dev/src/docbook/books/VBR/output/pdf/MPEG_VBR.pdf
五月 05, 2012 12:15:28 上午 org.apache.fop.apps.FopFactoryConfigurator configure
信息: Default page-height set to: 11in
五月 05, 2012 12:15:28 上午 org.apache.fop.apps.FopFactoryConfigurator configure
信息: Default page-width set to: 8.26in
五月 05, 2012 12:15:29 上午 org.apache.fop.events.LoggingEventListener processEvent
警告: Font "Symbol,normal,700" not found. Substituting with "Symbol,normal,400".
五月 05, 2012 12:15:29 上午 org.apache.fop.events.LoggingEventListener processEvent
警告: Font "ZapfDingbats,normal,700" not found. Substituting with "ZapfDingbats,normal,400".
五月 05, 2012 12:15:29 上午 org.apache.fop.hyphenation.Hyphenator getHyphenationTree
严重: Couldn't find hyphenation pattern zh_cn
五月 05, 2012 12:15:30 上午 org.apache.fop.events.LoggingEventListener processEvent
严重: Image not found. URI: images/mpeg_header.png. (See position 18:48726)
五月 05, 2012 12:15:30 上午 org.apache.fop.events.LoggingEventListener processEvent
严重: Image not found. URI: images/example.jpg. (See position 32:131)
五月 05, 2012 12:15:30 上午 org.apache.fop.events.LoggingEventListener processEvent
严重: Image not found. URI: images/mpeg_header.png. (No context info available)
五月 05, 2012 12:15:30 上午 org.apache.fop.events.LoggingEventListener processEvent
警告: Line 1 of a paragraph overflows the available area by 23800 millipoints. (See position 64:2815)
五月 05, 2012 12:15:30 上午 org.apache.fop.events.LoggingEventListener processEvent
警告: Line 5 of a paragraph overflows the available area by 22610 millipoints. (See position 64:3939)
五月 05, 2012 12:15:31 上午 org.apache.fop.events.LoggingEventListener processEvent
警告: Line 3 of a paragraph overflows the available area by more than 50 points. (See position 100:172)

需要说明的是,之前一直都是可以正常的,可以找到图片的,生成的pdf中是可以包含图片的。

相关的xml源码为:

        <figure><title>MPEG帧头含义举例</title>
            <graphic fileref="images/mpeg_header.png" align="center" width="100%" scalefit="1" />
        </figure>


        <inlinemediaobject>
            <imageobject><imagedata fileref="images/example.jpg"/></imageobject>
        </inlinemediaobject>

【解决过程】

1.首先是怀疑新添加的xsl有问题,所以去把docbook_fo_crl_yahei.xsl中的:

<xsl:import href="titlepage.template_crl.xsl"/>

注释掉了。

结果问题依旧。

2.又怀疑是其他新改动的xml源文件的内容所导致的此问题,所以去恢复了修改的地方成为以前的样子,结果问题依旧,看来不是xml源文件的问题。

3.后来又参考网上一些帖子:

fop 1.0 and svg error

docbook-apps message

docbook Image not found. URI

但是也没找到有效的办法.

4.也尝试过,将对应的images及其下面的两张图片example.jpg和mpeg_header.png,都一起拷贝到fo文件夹下面的,这样用fop,使用fo文件去生成pdf的时候,也许就可以找到对应图片了。结果问题依旧。

5. 想了半天,好像也再找不出,当前的情况,和之前的有何不同,而之前一直是可以正常编译,可以找到图片的.

后来突然想起来,唯一的一点区别就是,在运行这个fop命令的时候的,cygwin的当前路径,和以前不同,以前都是先cd到xml源码的路径下,然后再调用xsltproc和fop的,而现在是启动cygwin后,默认处理当前用户的home文件夹下,去调用xsltproc和fop的。所以,就去试试切换到src下面:

Administrator@K470 ~
$ pwd
/home/Administrator

Administrator@K470 ~
$ cd /cygdrive/e/Dev_Root/docbook/dev/src/docbook/books/VBR/src

Administrator@K470 /cygdrive/e/Dev_Root/docbook/dev/src/docbook/books/VBR/src
$ E:/Dev_Root/docbook/config/tool/fop/fop-1.0/fop.cmd -c E:/Dev_Root/docbook/config/tool/fop/fop-1.0/conf/fop.xconf E:/Dev_Root/docbook/dev/src/docbook/books/VBR/output/fo/MPEG_VBR.fo -pdf E:/Dev_Root/docbook/dev/src/docbook/books/VBR/output/pdf/MPEG_VBR.pdf
五月 05, 2012 1:07:52 上午 org.apache.fop.apps.FopFactoryConfigurator configure
信息: Default page-height set to: 11in
五月 05, 2012 1:07:52 上午 org.apache.fop.apps.FopFactoryConfigurator configure
信息: Default page-width set to: 8.26in
五月 05, 2012 1:07:54 上午 org.apache.fop.events.LoggingEventListener processEvent
警告: Font "Symbol,normal,700" not found. Substituting with "Symbol,normal,400".
五月 05, 2012 1:07:54 上午 org.apache.fop.events.LoggingEventListener processEvent
警告: Font "ZapfDingbats,normal,700" not found. Substituting with "ZapfDingbats,normal,400".
五月 05, 2012 1:07:54 上午 org.apache.fop.hyphenation.Hyphenator getHyphenationTree
严重: Couldn't find hyphenation pattern zh_cn
五月 05, 2012 1:07:56 上午 org.apache.fop.events.LoggingEventListener processEvent
警告: Line 1 of a paragraph overflows the available area by 23800 millipoints. (See position 64:2815)
五月 05, 2012 1:07:56 上午 org.apache.fop.events.LoggingEventListener processEvent
警告: Line 5 of a paragraph overflows the available area by 22610 millipoints. (See position 64:3939)
五月 05, 2012 1:07:57 上午 org.apache.fop.events.LoggingEventListener processEvent
警告: Line 3 of a paragraph overflows the available area by more than 50 points. (See position 100:172)

结果如上所示,的确就可以了。

因为对应的两个图片,都是放在src下面的images文件夹下面的。

【总结】

对于docbook中,添加图片的时候,一定要注意,除了本身xml文件中,图片的路径要写正确之外,而如果图片路径写的是相对路径地址的话,那么就要在编译的时候,比如使用fop从fo生成pdf的时候,注意当前的执行路径是否和你xml中的。

转载请注明:在路上 » 【已解决】docbook最后生成pdf的时候出错:严重: Image not found. URI: xxx.png. (See position xxx)

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (4)

  1. hi,crifan,问题已解决,是由于图片后缀搞错了,windows显示是JPEG,但实际上图片类型是JPG,困扰了我好几天。依然非常感谢你,从你的文章学到很多东西,一定把docbook用熟练!
    gmmywin5年前 (2013-09-25)回复
  2. crifan,你好:
    gmmywin5年前 (2013-09-25)回复
    • 我用xsltproc生成pdf时,提示找不到图片,callout也找不到图片。应该是路径问题。我是根据你的“Docbook开发手记”设置的目录,图片放在了src下的images文件夹中。fop生成pdf时,cmd也是在src执行的。xml中指定图片的语句是: 。网上参考文档也没找到解决方法,请帮忙看设置哪有问题,谢谢!
      gmmywin5年前 (2013-09-25)回复
      • 1.你发的评论中,发布的html代码,是无法显示的。 2.想要在评论中显示html代码(包括xml)可以用这样的形式: <code>你的html代码</code>
        crifan5年前 (2013-09-25)回复
19 queries in 0.236 seconds, using 10.59MB memory