0

我目前在 Apache Batik 1.7 中遇到一个问题,我正在尝试使用 PNGTranscoder 类将 SVG 转换为 PNG。

SVG 元素中包含图像,batik 尝试通过 HTTP 调用获取这些图像。获取这些图像时引发异常,如下所示:

org.apache.batik.transcoder.TranscoderException: null
Enclosed Exception:
null:0
The URI "https://sdp-w8-4:8080/custom/customimages/technicians_citype.png"
on element <image> can't be opened because:
The URI can't be opened:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)
    at org.apache.batik.transcoder.image.ImageTranscoder.transcode(Unknown Source)
    at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown Source)
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)

我可以看到问题是找不到证书,但我无法弄清楚我错过了什么!

服务器已经配置了https,我可以通过浏览器访问它,而且这个蜡染代码运行在同一台服务器上。

我必须为蜡染单独指定证书吗?如果是这样,我该怎么做?服务器是tomcat。

我没有指定任何与蜡染安全相关的内容,这是我的导出代码。

TranscoderInput transcoderInput = new TranscoderInput(processedInputStream);
        TranscoderOutput transcoderOutput = new TranscoderOutput(resultByteStream);

        PNGTranscoder pngTranscoder = new PNGTranscoder();
        pngTranscoder.addTranscodingHint(ImageTranscoder.KEY_ALTERNATE_STYLESHEET, "/svgrelationshipmap.css"); //no i18n
        pngTranscoder.addTranscodingHint(ImageTranscoder.KEY_BACKGROUND_COLOR, Color.white);

        pngTranscoder.transcode(transcoderInput, transcoderOutput);

processesInputStream 和 resultByteStream 是两个字节流。ProcessedByteStream 具有 svg 数据。

该过程在 HTTP 中运行良好,因此证明 SVG 是正确的。

我在这里想念什么?

4

0 回答 0