2014-03-03 21 views
0

我试图用doc.newPage();在新的页面中创建内容。它工作得很好,但是当我试图在forloop中使用它时,它不起作用。下面是我的代码document.newPage();没有在iText中的每个循环内工作

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); 
} 

如何解决这个问题?

+0

您的清单为空!你只初始化它,你没有添加任何元素,所以如果你循环集合中的所有字符串,你什么都没有循环:循环没有执行。 –

+0

不好意思忘了给列表添加字符串。我已更新我的问题 –

+0

你有什么解决方案吗? – Naren

回答

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)); 
} 

而且,以供将来参考,您的代码抛出一个异常,这将是最好的,如果你提供的以后的问题任何抛出的异常。