document.newPage();不在iText中为每个循环工作

时间:2014-03-03 14:52:55

标签: java pdf itext

我尝试使用doc.newPage();在新页面中创建内容。它工作正常,但当我试图在forloop内使用相同它不起作用。以下是我的代码

String first="First Page";
String second="second Page";

ByteArrayInputStream is = new ByteArrayInputStream(first.getBytes());
worker.parseXHtml(pdfWriter, doc, is);

doc.newPage();               
is=new ByteArrayInputStream(second.getBytes());
worker.parseXHtml(pdfWriter, doc, is);

这段代码工作正常,但是当我把这段代码放在for循环中时,它不会在2页中创建内容。

ByteArrayInputStream is = null;
List<String> strList=new ArrayList<String>();
String first="First Page";
String second="second Page";
strList.add(first);
strList.add(second);
for(String string:strList)
{
   doc.newPage();                
   is=new ByteArrayInputStream(second.getBytes());
   worker.parseXHtml(pdfWriter, doc, is);
}

如何克服这个问题?

1 个答案:

答案 0 :(得分:1)

使用XMLWorker时,显然添加没有HTML标记的文本会失败。这是一个已知的错误。现在,解决方法是检查字符串是否包含HTML元素,如果没有,则可以将其包装在段落标记中。

我调整了你的样本以使其正常工作:

List<String> strList=new ArrayList<String>();
String first="<p>First Page</p>";
String second="<p>second Page</p>";
strList.add(first);
strList.add(second);
for(String string:strList)
{
    doc.newPage();
    // I just prefer StringReaders over ByteArrayInputStreams
    worker.parseXHtml(pdfWriter, doc, new StringReader(string));
}

此外,为了将来参考,您的代码会抛出异常,最好是在将来的问题中提供任何抛出的异常。