将SVG与FOP一起放入PDF只能在本地计算机上使用,而不能在服务器上使用

时间:2019-07-12 16:41:00

标签: apache-fop

在本地计算机上,一切正常,当我尝试在服务器上运行它时,出现此错误,它可以正常运行,但不包含SVG徽标。

2019-07-12 09:09:01,956 [错误] [主] [LoggingEventListener]图片不可用。 URI :(流内对象)。原因:org.apache.xmlgraphics.image.loader.ImageException:不支持文件格式。找不到ImagePreloader为空(没有可用的上下文信息) org.apache.xmlgraphics.image.loader.ImageException:不支持文件格式。找不到ImagePreloader为null 在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包含文件片段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*

1 个答案:

答案 0 :(得分:0)

对我来说,使用Amazon Corretto JDK时会发生此问题。 Java Corretto有一些会导致字体问题的错误,请参见Github上的问题:Broken Font support (Fontconfig) in AWS-Lambda (java11)Generic Linux distro requires Fontconfig for font support (java8)

实际上为我们解决了这个问题的是在操作系统上安装软件包setTimeout(我们正在运行Ubuntu虚拟服务器,因此没有问题):

fontconfig

那之后SVG渲染就可以了。