Apache FOP外部图形未使用https网址加载图像

时间:2018-12-20 17:21:38

标签: https apache-fop

当我有一个包含使用https对图像的引用的.fo文档时,该文档无法渲染,并且在fop输出中出现错误。例如:

<?xml version="1.0" encoding="utf-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
        <fo:simple-page-master page-width="8.5in" page-height="11in" master-name="BodyPage">
            <fo:region-body margin-top=".5in" margin-right=".5in" margin-bottom=".5in" margin-left=".5in"/>
            <fo:region-before region-name="header" extent=".5in" display-align="after"/>
            <fo:region-after region-name="footer" extent=".5in" display-align="before"/>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="BodyPage">
        <fo:flow flow-name="xsl-region-body">
            <fo:block space-before="1pc">
                <fo:external-graphic src="url(https://ichef.bbci.co.uk/images/ic/960x540/p01br4cp.jpg)" overflow="hidden" content-width="scale-to-fit" content-height="scale-to-fit" width="100%" scaling="uniform"/>
            </fo:block>
        </fo:flow>
    </fo:page-sequence>
</fo:root>

产生此错误:

SEVERE: Image not found. URI: https://ichef.bbci.co.uk/images/ic/960x540/p01br4cp.jpg. (See position 13:202)

但是简单地将URL修改为http就可以了。这不是网络问题,因为https url上的curl可以正常工作(通过TLS 1.2)。如何获取安全资源以将其加载到PDF中?

1 个答案:

答案 0 :(得分:0)

啊哈!我的命令行包含-Djava.ext.dirs =,它可以打破SSL设置中的RSA步骤(请参见RSA Premaster secret error)。使用-Dfop.home =不会导致此问题。