首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XMLWorkerHelper在标记之间丢失文本而不是在标记之间丢失

XMLWorkerHelper在标记之间丢失文本而不是在标记之间丢失
EN

Stack Overflow用户
提问于 2015-06-26 08:29:11
回答 1查看 215关注 0票数 0

我一直在使用XMLWorkerHelper向PDF添加格式化文本(通过富文本编辑器在页面上输入)。我注意到,有时并不是所有的文本都在PDF中呈现。显然,XMLWorkerHelper不会在HTML标记之间删除文本。这行为正确吗?

我编写了一个显示问题的JUnit测试用例:

代码语言:javascript
复制
public class XMLWorkerTest {

    @Test
    public void test() throws IOException, DocumentException {
        Document document = new Document();
        String fileName = "itext_test_" + System.currentTimeMillis() + ".pdf";
        PdfWriter.getInstance(document, new FileOutputStream(fileName));
        document.open();
        Paragraph paragraph = new Paragraph();

        String s1 = "not between tags<b>between tags</b>not between tags";
        addHtml(paragraph, s1);
        // NOT OK: 'not between tags' missing twice

        paragraph.add(Chunk.NEWLINE);

        String s2 ="<span>" + s1 + "</span>";
        addHtml(paragraph, s2);
        // OK

        document.add(paragraph);
        document.close();
    }

    private void addHtml(final Paragraph paragraph, String html) throws IOException {
        XMLWorkerHelper.getInstance().parseXHtml(new ElementHandler() {
            @Override
            public void add(Writable writable) {
                if (writable instanceof WritableElement) {
                    for (Element element : ((WritableElement) writable).elements()) {
                        paragraph.add(element);
                    }
                }
            }
        }, new ByteArrayInputStream(html.getBytes()), Charset.defaultCharset());
    }
}

我们使用的是5.5.6版本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-26 12:52:26

这就是人们所期望的行为。您的html应该有一个根标记,否则它就不是真正的html。仅仅因为文本显示在浏览器中并不意味着这是一个良好的格式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31068474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档