我有一系列字符串如下: -
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文件只有: -
请帮忙。
答案 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();
}