PDF包含来自Java Itext的多个段落

时间:2014-12-28 19:39:57

标签: java pdf-generation itextsharp

我有一系列字符串如下: -

String[] data = {“Sunday”,”Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”,”Saturday”}.

现在我想将这些数据字符串写入一个低于另一个的pdf文件,如: -

  1. Sunday
  2. Monday
  3. Tuesday
  4. Wednesday
  5. Thursday
  6. Friday
  7. Saturday.

我正在使用itext来实现这一目标。以下是我正在使用的代码段

for(int i= 0; i< data.length;i++)

{

Document document=new Document();
PdfWriter.getInstance(document, new FileOutputStream(directory));
document.open();
document.add(new Paragraph(data[i]));
document.add(Chunk.NEWLINE);
document.close();
}

问题: -

我得到的pdf文件只有: -

  1. 星期六。
  2. 请帮忙。

2 个答案:

答案 0 :(得分:4)

问题是,您是在循环中创建文档。试试这个:

Document document=new Document();
PdfWriter.getInstance(document, new FileOutputStream(directory));
document.open();
for(int i= 0; i< data.length;i++)
{
  document.add(new Paragraph(data[i]));
  document.add(Chunk.NEWLINE);
}
document.close();

您可能希望在出现问题时处理流的关闭。 使用Java 7或更高版本,您可以实现:

Document document=new Document();
try (FileOutputStream fos = new FileOutputStream(directory)) {
  PdfWriter.getInstance(document, fos);
  document.open();
  for(int i= 0; i< data.length;i++)
  {
    document.add(new Paragraph(data[i]));
    document.add(Chunk.NEWLINE);
  }
  //EDIT start
  document.close();
  //EDIT end
}

答案 1 :(得分:0)

您正在循环创建文档并也将其关闭。

确保文档在其生命周期中只能打开和关闭一次。

try
{
   Document document=new Document();
   PdfWriter.getInstance(document, new FileOutputStream(directory));
   document.open();
   for(int i= 0; i< data.length;i++)
   {
      document.add(new Paragraph(data[i]));
      document.add(Chunk.NEWLINE);    
   }
 }
finally{

document.close();
}