title: PDFbox saying PDDocument closed when its not
body: <p>I am trying to populate repeated forms with PDFbox.  I am using a TreeMap and populating the forms with individual records.  The format of the pdf form is such that there are six records listed on page one and a static page inserted on page two.  (For a TreeMap larger than six records, the process repeats).  The error Im getting is specific to the size of the TreeMap.  Therein lies my problem.  I can't figure out why when I populate the TreeMap with more than 35 entries I get this warning:</p>
  
  <p>Apr 23, 2018 2:36:25 AM org.apache.pdfbox.cos.COSDocument finalize
  WARNING: Warning: You did not close a PDF Document</p>
  
  <pre><code>public class test {
      public static void main(String[] args) throws IOException,         IOException {
      // TODO Auto-generated method stub
      File dataFile = new File("dataFile.csv");
      File fi = new File("form.pdf");
      Scanner fileScanner = new Scanner(dataFile);
      fileScanner.nextLine();
      TreeMap&lt;String, String[]&gt; assetTable = new TreeMap&lt;String, String[]&gt;();
      int x = 0;
      while (x &lt;= 36) {
          String lineIn = fileScanner.nextLine();
          String[] elements = lineIn.split(",");
          elements[0] = elements[0].toUpperCase().replaceAll(" ", "");
          String key = elements[0];
          key = key.replaceAll(" ", "");
          assetTable.put(key, elements);
          x++;
      }
      PDDocument newDoc = new PDDocument();
      int control = 1;
      PDDocument doc = PDDocument.load(fi);
      PDDocumentCatalog cat = doc.getDocumentCatalog();
      PDAcroForm form = cat.getAcroForm();
      for (String s : assetTable.keySet()) {
          if (control &lt;= 6) {
              PDField IDno1 = (form.getField("IDno" + control));
              PDField Locno1 = (form.getField("locNo" + control));
              PDField serno1 = (form.getField("serNo" + control));
              PDField typeno1 = (form.getField("typeNo" + control));
              PDField maintno1 = (form.getField("maintNo" + control));
              String IDnoOne = assetTable.get(s)[1];
              //System.out.println(IDnoOne);
              IDno1.setValue(assetTable.get(s)[0]);
              IDno1.setReadOnly(true);
              Locno1.setValue(assetTable.get(s)[1]);
              Locno1.setReadOnly(true);
              serno1.setValue(assetTable.get(s)[2]);
              serno1.setReadOnly(true);
              typeno1.setValue(assetTable.get(s)[3]);
              typeno1.setReadOnly(true);
              String type = "";
              if (assetTable.get(s)[5].equals("1"))
                  type += "Hydrotest";
              if (assetTable.get(s)[5].equals("6"))
                  type += "6 Year Maintenance";
              String maint = assetTable.get(s)[4] + " - " + type;
              maintno1.setValue(maint);
              maintno1.setReadOnly(true);
              control++;
          } else {
              PDField dateIn = form.getField("dateIn");
              dateIn.setValue("1/2019 Yearlies");
              dateIn.setReadOnly(true);
              PDField tagDate = form.getField("tagDate");
              tagDate.setValue("2019 / 2020");
              tagDate.setReadOnly(true);
              newDoc.addPage(doc.getPage(0));
              newDoc.addPage(doc.getPage(1));
              control = 1;
              doc = PDDocument.load(fi);
              cat = doc.getDocumentCatalog();
              form = cat.getAcroForm();
          }
      }
      PDField dateIn = form.getField("dateIn");
      dateIn.setValue("1/2019 Yearlies");
      dateIn.setReadOnly(true);
      PDField tagDate = form.getField("tagDate");
      tagDate.setValue("2019 / 2020");
      tagDate.setReadOnly(true);
      newDoc.addPage(doc.getPage(0));
      newDoc.addPage(doc.getPage(1));
      newDoc.save("PDFtest.pdf");
      Desktop.getDesktop().open(new File("PDFtest.pdf"));
  
  }
  </code></pre>
  
  <p>I cant figure out for the life of me what I'm doing wrong.  This is the first week I've been working with PDFbox so I'm hoping its something simple.</p>
  
  <p>Updated Error Message</p>
  
  <pre><code>WARNING: Warning: You did not close a PDF Document
  Exception in thread "main" java.io.IOException: COSStream has been closed and cannot be read. Perhaps its enclosing PDDocument has been closed?
      at org.apache.pdfbox.cos.COSStream.checkClosed(COSStream.java:77)
      at org.apache.pdfbox.cos.COSStream.createRawInputStream(COSStream.java:125)
      at org.apache.pdfbox.pdfwriter.COSWriter.visitFromStream(COSWriter.java:1200)
      at org.apache.pdfbox.cos.COSStream.accept(COSStream.java:383)
      at org.apache.pdfbox.cos.COSObject.accept(COSObject.java:158)
      at org.apache.pdfbox.pdfwriter.COSWriter.doWriteObject(COSWriter.java:522)
      at org.apache.pdfbox.pdfwriter.COSWriter.doWriteObjects(COSWriter.java:460)
      at org.apache.pdfbox.pdfwriter.COSWriter.doWriteBody(COSWriter.java:444)
      at org.apache.pdfbox.pdfwriter.COSWriter.visitFromDocument(COSWriter.java:1096)
      at org.apache.pdfbox.cos.COSDocument.accept(COSDocument.java:419)
      at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1367)
      at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1254)
      at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:1232)
      at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:1204)
      at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:1192)
      at test.test.main(test.java:87)
  </code></pre>