将PdfDiv添加到段落中 [英] Adding PdfDiv to Paragraph

查看:408
本文介绍了将PdfDiv添加到段落中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是与表格单元格中的列表项目未格式化相关的主题。我正在使用XmlWorker处理格式化控件的HTML输出(来自Dojo的dijit / Editor)。有一些块(当你使用居中或边距格式化器时)如下:

It's the topic connected with List items in table cell are not formatted. I'm using XmlWorker to process HTML output from formattable control (dijit/Editor from Dojo). There are some blocks (when you use centering or margin formatters) like that:

<div>
    <p align="center"><font size="5"><b>&nbsp;<font color="#32cd32">My centered Para</font></b></font><font color="#32cd32">&nbsp;</font></p>
</div>

然而,当我将它们添加到段落像这里一样添加到表中:

However, when I add them to the Paragraph that is added to the Table like here:

    PdfPCell htmlCell = new PdfPCell();
    htmlCell.setBackgroundColor(new BaseColor(213, 226, 187));
    htmlCell.addElement(html2Para(html));
    htmlCell.setPaddingBottom(5);
    htmlCell.setPaddingLeft(5);
    table.addCell(htmlCell);

private Paragraph html2para(String html) {
    final Paragraph para = new Paragraph();
    try {
        XMLWorkerHelper.getInstance().parseXHtml(new ElementHandler() {
            @Override
            public void add(Writable wri) {
                if (wri instanceof WritableElement) {
                    List<Element> elems = ((WritableElement) wri).elements();
                    for (Element elem : elems) {
                        para.add(elem);
                    }
                }
            }
        }, new StringReader(StringUtils.trimToEmpty(html)));
    } catch (IOException e) {
        log.error(e.getMessage(), e);
    }
    return para;
}

元素内的所有内容 PdfDiv 的实例不可见。

所以,当我遇到PdfDiv时,我添加了它的内容:

So, when I meet the PdfDiv, I add its content:

private void addElem2para(Element elem, Paragraph target) {
    if (elem instanceof PdfDiv) {
        for (Element inside : ((PdfDiv)elem).getContent()) {
            addElem2para(inside, target);
        }
    } else {
        target.add(elem);
    }
}   

但是,现在格式化如居中或保证金 PdfDiv 的属性丢失。

However, now that formatting like centering or margin that were the properties of the PdfDiv are 'lost'.

如何处理来自XmlWorker的PdfDiv 元素?

我在版本5.5.2中使用iText和XmlWorker

I'm using iText and XmlWorker in version 5.5.2

推荐答案

(我认为)我理解你的问题,但我不明白你的代码。

(I think) I understand your question, but I don't understand your code.

ParseHtml 示例显示了我如何解释您的问题:

The ParseHtml example shows how I interpreted your question:

StringBuilder sb = new StringBuilder();
sb.append("<div>\n<p align=\"center\">");
sb.append("<font size=\"5\">");
sb.append("<b>&nbsp;<font color=\"#32cd32\">My centered Para</font></b>");
sb.append("</font>");
sb.append("<font color=\"#32cd32\">&nbsp;</font>");
sb.append("</p>\n</div>");

PdfPTable table = new PdfPTable(1);
PdfPCell cell = new PdfPCell();
ElementList list = XMLWorkerHelper.parseToElementList(sb.toString(), null);
for (Element element : list) {
    cell.addElement(element);
}
table.addCell(cell);
document.add(table);

您有一些HTML(我将您的HTML代码段存储在 sb )您要解析为要添加到表格单元格的一系列iText对象。

You have some HTML (I stored your HTML snippet in sb) that you want to parse into a series of iText objects to be added to a table cell.

这是此操作的结果:

这看起来就像我预期的那样。

That looks pretty much the way I expected.

这篇关于将PdfDiv添加到段落中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆