请停止使用
HTMLWorker,因为在StackOverflow
HTMLWorker上已多次重复使用,但很早以前该类已被XML
Worker放弃了。我们不会投资进一步开发
HTMLWorker它,因此使用它是一个非常糟糕的选择。请切换到XML Worker。
还要升级到最新的iText版本,即您使用的版本从2011年2月4日开始,在过去的4年中已修复了许多错误。确保同时拥有相同版本号的iText
jar和XML Worker jar。
目前尚不支持base64图像,但是我为您提供了一个非常简单的概念证明,它显示了添加对此类图像的支持是多么容易。看一下ParseHtml4示例和生成的PDF:html_4.pdf。
为此,您需要编写
ImageProvider接口的实现。我通过扩展
AbstractImageProvider类来做到这一点:
class base64ImageProvider extends AbstractImageProvider { @Override public Image retrieve(String src) { int pos = src.indexOf("base64,"); try { if (src.startsWith("data") && pos > 0) { byte[] img = base64.depre(src.substring(pos + 7)); return Image.getInstance(img); } else { return Image.getInstance(src); } } catch (BadElementException ex) { return null; } catch (IOException ex) { return null; } } @Override public String getImageRootPath() { return null; }}如您所见,我
"base64,"通过标记的
src属性检查传递给XML Worker
的内容是否存在
img。如果
String存在,我将解码其后的内容,
"base64,"并返回一个
Image使用结果字节创建的对象。
一旦
ImageProvider实现了此实现,只需将其传递给XML Worker。



