【问题标题】:rendering images XmlWorkerHelper(itextpdf)渲染图像 XmlWorkerHelper(itextpdf)
【发布时间】:2015-12-28 13:10:15
【问题描述】:

请帮帮我。

我在 pdf 中渲染图像时遇到问题 我使用的是 itextpdf 5.5.6 和 itext 5.5.6

我的代码是:

    .
    .
    .


    URL url = new URL("http://some.html");

    URLConnection uc = url.openConnection();
    InputStreamReader inputStreamReader = new InputStreamReader(uc.getInputStream());
     XMLWorkerHelper worker = XMLWorkerHelper.getInstance();

     worker.parseXHtml(pdrwriter, doc, inputStreamReader);

     doc.close();
        //close the writer
     pdrwriter.close();

我的 html 有:

<table><tr><td><img src="http://mysite/logo.jpg" /></td</tr></table>

我得到错误: 找到无效的嵌套标记 td,应为结束标记 img。

我试过了

<table><tr><td><img src="http://mysite/logo.jpg"></img</td</tr></table> 

山姆错误..

你知道怎么处理吗?谢谢帮忙!!!

【问题讨论】:

    标签: itextpdf


    【解决方案1】:

    这是错误的:

    <table><tr><td><img src="http://mysite/logo.jpg" /></td</tr></table>
    

    应该是:

    <table><tr><td><img src="http://mysite/logo.jpg" /></td></tr></table>
    

    这也是错误的:

    <table><tr><td><img src="http://mysite/logo.jpg"></img</td</tr></table>
    

    应该是:

    <table><tr><td><img src="http://mysite/logo.jpg"></img></td></tr></table> 
    

    【讨论】:

    • 嘿,我在我的问题中犯了一个错误,但没有,我只是按错了键.. :)
    【解决方案2】:

    如果您正在解析的 HTML 文件存储在与工作目录不同的目录中,iText 将无法创建 Image 对象。我们必须提供一个 ImageProvider 接口的实现,告诉 iText 如果遇到 img 标签该怎么做。该接口有如下方法。

    Image retrieve(final String src);
    String getImageRootPath();
    void store(String src, Image img);
    void reset();
    

    您可以编写自己的类来实现这四个方法,也可以将 AbstractImageProvider 子类化。最好采用后者。

    XML Worker 将使用 AbstractImageProvider 类的 store() 方法来缓存 Map 中遇到的所有 Image 对象。当为具有相同 src 的图像调用 retrieve() 方法时,这些对象将被重用。如果您不缓存图像,您的 PDF 将变得臃肿。相同的图像位和字节将多次写入 PDF。 reset() 方法清除缓存;它在 ImageProvider 被克隆时使用。最后,没有实现 getImageRootPath() 方法。您必须自己实现它,就像在下面的 sn-p 中所做的那样

    htmlContext.setImageProvider(new AbstractImageProvider() {
    
    public String getImageRootPath() {
    
        return "src/main/resources/html/";
    
    }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-21
      • 2017-09-17
      • 2016-04-23
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多