首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在IText中使用XMLWorkerHelper

在IText中使用XMLWorkerHelper
EN

Stack Overflow用户
提问于 2013-02-22 00:24:10
回答 1查看 5.9K关注 0票数 2

我刚开始使用iText,我不知道XMLWorkerHelper类是如何工作的。我正在尝试创建一个方法,该方法接受包含html文档的字符串,将html转换为pdf文档,并将pdf作为字节数组返回。如果有人能指出以下代码中的错误,我将不胜感激。

代码语言:javascript
复制
Document document = new Document(); 
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter pdfWriter = PdfWriter.getInstance(document, baos);
document.open();
StringReader stringReader = new StringReader(articleString);
StringWriter stringWriter = new StringWriter();<br/>
Tidy tidy = new Tidy();
tidy.setXHTML(true);
tidy.parse(stringReader, stringWriter);
System.out.println("Before XMLWorkerHelper");
XMLWorkerHelper xwh = XMLWorkerHelper.getInstance();
xwh.parseXHtml(pdfWriter, document, new StringReader(stringWriter.toString()));
System.out.println("After XMLWorkerHelper");
document.close();
stringReader.close();
result = baos.toByteArray();

我使用的代码就是上面的代码。html代码在变量articleString中。重要的部分在两个System.out.println语句之间。这是web应用程序的一部分,System.out会将所有错误或异常消息写入服务器日志,但是发生的情况是,在两个println语句之间,应用程序似乎只是终止而没有抛出任何异常。因此,打印“XMLWorkerHelper之前”行,但不打印“XMLWorkerHelper之后”行。

我使用的jar文件是itextpdf-5.4.0.jar、itext-pdfa-5.4.0.jar、itext-xtra-5.4.0.jar、xmlworker-5.4.0.jar

我尝试转换的html文件是简单的“测试者文章”,它被jTidy转换为

代码语言:javascript
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
Tester Article
</body>
</html>

我尝试使用iText 5.0JAR中的旧HTMLWorker类代替XMLWorkerHelper代码,一切工作正常。我用来代替上面的XMLWorkerHelper行的HTMLWorker代码是:

代码语言:javascript
复制
HTMLWorker htmlWorker = new HTMLWorker(document);
htmlWorker.parse(new StringReader(stringWriter.toString()));
EN

回答 1

Stack Overflow用户

发布于 2013-09-16 14:27:49

我希望这个问题已经解决了。如果不是,请尝试删除

代码。如果这样做不起作用,可以尝试将stringWriter.toString()放在InputStream中,然后在parseXHtml上使用流来代替stringWriter.toString()

InputStream

代码语言:javascript
复制
InputStream stream = new ByteArrayInputStream(stringWriter.toString().getBytes("UTF-8"));

XMLWorkerHelper:

代码语言:javascript
复制
XMLWorkerHelper.getInstance().parseXHtml(pdfWriter, document, stream);

希望这对你或任何有同样问题的人有所帮助

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

https://stackoverflow.com/questions/15007261

复制
相关文章

相似问题

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