【问题】
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.后来又参考网上一些帖子:
但是也没找到有效的办法.
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)
<code>你的html代码</code>