0

在我的 JavaFX 应用程序中,我使用 Apache 生成了带有barcode4j 的条形码,将其保存为目录 /data/images/ 中的 png 图像,并将其嵌入到显示在 JavaFX WebView 上的网页中。

生成条形码后,我使用以下 Javascript 代码将其嵌入到网页中:

path = "file:/" + path.replace(/\\/gi,"/");
var barcodeElement = document.getElementById("productBarcode");
barcodeElement.setAttribute("src", path );
barcodeElement.style.display = "inline-block";

我使用绝对路径 C:\path\to\java-program\data\myimage.png 并从中构建一个文件 URL。在 Eclipse 中使用它没有任何问题。但是当我构建我的项目并从我的 jar 文件启动它时,没有显示图像。但问题不在于路径不正确或生成图片不起作用,从而出现某种“未找到”错误。图像应该是白色的地方,周围有一个浅色边框。

现在最奇怪的部分:如果你右键单击图像并选择“在新窗口中打开”,图像就会显示出来!

有人对此有想法吗?

非常感谢您!

4

1 回答 1

0

我的理解是,WebView 不会让加载了一个协议的页面使用另一个协议访问文件。当您通过 http:// 加载并禁止 file:// 时,这非常有意义。在这里,您正在通过 jar:file:... 加载,而 webview 只会让您访问 jar:file:... 资源(我刚刚尝试过,我可以从同一个 jar 中的另一个 jar 文件访问图像文件,但不是来自外部!)。

这对我来说听起来很像一个错误。

这里提到的一种解决方法是使用“data:”URI(即直接在 HTML 文件中编码图像)。

于 2013-10-14T22:32:01.893 回答