如何使用iTextPDF从html字符串将图像添加到pdf

时间:2019-07-30 16:23:30

标签: java html image itext pdf-generation

我正在尝试使用从外部API抓取的HTML字符串制作PDF文档。我遇到了一个问题,其中html字符串中有一个标签,但是图像不会添加到PDF文档中。我正在使用iTextPDF 5.5.13及其XMLWorker从HTML字符串创建PDF。复杂的部分原因是图像可以嵌套在表中,因此我需要一种将它们与同一单元格及其相邻单元中的其余文本一起添加到文档中的方法。

由于我使用的图像存储在私有服务器上,因此我首先必须将图像获取为InputStream,然后将其编码为base64,这样我就可以打印它而不会出现401错误。我已经能够通过创建一个新的Image对象来附加图像,但这似乎不允许我将其插入html字符串的中间。因此,我需要一个采用如下HTML字符串的解决方案:

<table border="1" cellspacing="0" cellpadding="0">
  <tbody>
    <tr>
      <td valign="top" width="156">Column 1</td>
      <td valign="top" width="159">Column 2</td>
      <td valign="top" width="242"><p align="left">Icon&nbsp;<img src="data:image/png;base64, ..." alt="" width="21" height="28" /></p></td>
    </tr>
  </tbody>
</table>

和其他几个HTML字符串,并将它们添加到一个PDF文档中。

我能够使用iText的Image对象打印图像,但无法使用其余的html进行格式化

下面的代码是我当前正在读取数据的方式。

InputStream is = new ByteArrayInputStream("<p><div><img height=\"24\" src=\"data:image/png;base64, ###BASE64IMAGE###\" width=\"28\" /></div></p>"
.getBytes());
XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);

我正在尝试找到一种解决方案,该解决方案使我可以将图像与其余HTML字符串一起解析,因此仍将其格式设置为与原始页面上的外观相同。

0 个答案:

没有答案