【发布时间】:2019-07-12 16:41:00
【问题描述】:
在本地机器上一切正常,当我尝试在服务器上运行它时出现此错误,它生成正常,但不包含 SVG 徽标。
2019-07-12 09:09:01,956 [ERROR] [main] [LoggingEventListener] 图片不可用。 URI:(流内对象)。原因:org.apache.xmlgraphics.image.loader.ImageException:不支持文件格式。没有为 null 找到 ImagePreloader(没有可用的上下文信息) org.apache.xmlgraphics.image.loader.ImageException:不支持文件格式。没有为 null 找到 ImagePreloader 在 org.apache.xmlgraphics.image.loader.ImageManager.preloadImage(ImageManager.java:181) 在 org.apache.fop.render.intermediate.AbstractIFPainter.drawImageUsingDocument(AbstractIFPainter.java:317) 在 org.apache.fop.render.pdf.PDFPainter.drawImage(PDFPainter.java:286)
这是它的包含方式
<fo:block margin-right="1.5cm" text-align="right">
<fo:instream-foreign-object>
#include("Logo.vm")
</fo:instream-foreign-object>
</fo:block>
这是 SVG 包含文件 sn-p Logo.vm:
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
id="Ebene_1"
x="0px"
y="0px"
viewBox="0 0 175 40"
enable-background="new 0 0 115 40"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
width="146"
height="38"
sodipodi:docname="DL_115x40.svg"><metadata
id="metadata3067"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/d/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs3065" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="492"
inkscape:window-height="309"
id="namedview3063"
showgrid="false"
inkscape:zoom="2.7826087"
inkscape:cx="57.5"
inkscape:cy="20"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="Ebene_1" />
<path class="st0" d="M122.9 34.2c0 .8-.6 1.3-1 .... *MORE AND MORE NUMBERS COMMING*
【问题讨论】:
-
SVG 本身是在 instream-foreign-object 内部还是外部图形?
-
它是
#include("shipLogoMW.vm") -
而且这个网址也可以从服务器访问,所以没问题:purl.org/d/dcmitype/StillImage
-
可能是 mimetype 问题?我不知道 #include("shipLogoMW.vm") 是什么意思,但我认为它会获取 SVG 文件并将其放入标签中。可能是因为文件名为 .vm 而不是 .svg 服务器没有返回正确的 mimetype?
-
我们也试过这个,但没有奏效。此外,我们尝试将其作为外部图形包含在内,但这里也是同样的问题。奇怪的是,我们在另一台生产服务器上有类似的代码,它在那里运行。也许这是某种pom问题,我不确定。蜡染已加载。同样对于 Batik,有人提到使用 -Djava.awt.headless=true 运行 JAVA,但这也没有什么不同。
标签: apache-fop