我目前在 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 是正确的。
我在这里想念什么?