Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
包含来自Java Itext的多个段落的PDF_Java_Pdf Generation_Itextsharp - Fatal编程技术网

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

包含来自Java Itext的多个段落的PDF,java,pdf-generation,itextsharp,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来实现这一点。

我有一个字符串数组,如下所示:-

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();
}
for(int i=0;i
问题:-

我得到的pdf文件只有:-

  • 星期六

  • 请帮助。

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

    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();
    
    Document Document=新文档();
    getInstance(文档,新文件输出流(目录));
    document.open();
    for(int i=0;i
    您可能需要处理流的关闭,以防发生什么情况。 使用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
    }
    
    Document Document=新文档();
    try(FileOutputStream fos=newfileoutputstream(目录)){
    PdfWriter.getInstance(文档,fos);
    document.open();
    for(int i=0;i
    您正在循环中创建文档,并关闭该文档

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

    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();
    }
    
    试试看
    {
    文档=新文档();
    getInstance(文档,新文件输出流(目录));
    document.open();
    for(int i=0;i
    您正在(重新)在循环中创建文档。我认为您的第二个代码片段不起作用
    document.close()
    将所有字体字典、信息字典和交叉引用表写入输出流。如果流已关闭,则无法执行此操作。您的第一个示例非常有效。关闭文档时,流将关闭。谢谢!现在,如果达到
    document.close()
    ,则iText将关闭
    fos
    。但是,如果在
    document.close()
    之前发生异常,则会因为使用
    try
    构造而关闭
    fos
    。我喜欢!你的答案和以前被接受的答案差不多,不是吗?