下午好。我正在尝试使用Itext 7的PdfHTML插件为我的Html加载静态内容以PDF对话。此时,我只是按照他们网站上的样板示例做一个hello world示例:
我的代码无论如何都不会偏离它。唯一的区别是我正在设置一个ConverterProperties对象并将其添加到调用中。
ConverterProperties converterProperties = new ConverterProperties()
.setBaseUri("https://randomURIforReelzBro.com/");
HtmlConverter.convertToPdf(new FileInputStream("src/htmldocs/randomHTMLforReelzBro.html"), new FileOutputStream(dest), converterProperties);
内容存在于我的vpn上,我可以从IDE的运行时访问它。
所以如果我把URI的完整路径放在浏览器中,我可以清楚地看到内容(在这种情况下是JPEG)。然而,转换后的PDF看不到它。我错过了一些简单的东西吗?根据Itext网站上的档留,它应该是一个相对路径。我应该只包括我的html页面使用的所有内容资源共有的路径部分吗?如果你有任何想法,请告诉我。如果我想出了什么办法,我会为任何其他在这个问题上挣扎的人写下我的答案。
做了一点实验后,Jar似乎对本地托管的内容有一个非常随机的响应。我认为这可能是https与超文本传输协议的区别,但是,我发现了每个加载的示例和其他未加载的示例。所有内容都在浏览器中加载(显然)。此外,设置URI似乎对结果没有任何影响?我想说这很奇怪。有人有什么想法吗?特别是IText团队的人?
在研究了这个问题之后,事实证明,因为图像在Table Data元素的背景标签中,htmlToPDF甚至没有找到图像。
元素中的背景图像已被弃用,所以我认为Itext 7对它们没有任何作用。
将图像迁移到标题中的样式标签后:
<style>
.blueimage1 {background-image: url("https://randomstaticcontent.screwy/random.gif"); }
.blueimage2 {background-image: url("https://randomstaticcontent.screwy/randomA1.gif"); }
</style>
iText 7能够找到静态内容并创建PDF。
故事的寓意,在运行IText之前搜索您的超文本标记语言以查找已弃用的标记。