栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

具有base64图像的HTML到PDF引发FileNotFoundException

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

具有base64图像的HTML到PDF引发FileNotFoundException

请停止使用

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。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437638.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号