Uploaded image for project: 'PDFBox'
  1. PDFBox
  2. PDFBOX-2512

OutOfMemory while signing large documents

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.8.7
    • Fix Version/s: 1.8.8
    • Component/s: Parsing, Signing
    • Labels:
      None

      Description

      While working with large documents, we found some memory issues.

      1. The method close() in the COSDocument, clones the objectpool and does not clean it properly. The cloning in getObjects() cause a OutOfMemory exception.

      2.The COSWriter copy the whole pdf into the memory for signing and does not use BufferedInputStream for the FileInputStream which also has a big performance impact. (PDFBOX-1798)

      3. The cloning of COSStreams cause a OutOfMemory exception

      I used the CreateSignature example with a about 150 MB big document from here:
      https://cdn-reichelt.de/bilder/downloads/reichelt_01-2015_DE_B_HQ.pdf

      Additionaly I add a RandomAccessFile to the PDDocument.load in the CreateSignature class.

      PDDocument doc = PDDocument.load(document,new RandomAccessFile(new File("d:
      temp.bin"), "rw")); (this prevent the OOM for the third case)

      The use of a BuffedInputStream in case two, will increase the signing speed from more than 5 minutes to less than 1 minute.

        Attachments

        1. keystore.p12
          3 kB
          Thomas Chojecki

          Activity

            People

            • Assignee:
              tchojecki Thomas Chojecki
              Reporter:
              tchojecki Thomas Chojecki
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: