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

COSWriter sometimes retrieves wrong ObjectKey

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    Details

    • Flags:
      Patch

      Description

      If a COSBase is directly embedded in a COSObject, it should not be assigned a new object number by the writer. We suggest the following implementation for `COSWriter.getObjectKey(COSBase)`:

      /**
       * This will get the object key for the object.
       *
       * @param obj The object to get the key for.
       *
       * @return The object key for the object.
      */
      protected COSObjectKey getObjectKey( COSBase obj )
      {
          COSBase actual = obj;
          if( actual instanceof COSObject )
          {
              actual = ((COSObject)obj).getObject();
          }
          COSObjectKey key = null;
          key = objectKeys.get(obj);
          if( key == null && actual != null )
          {
              key = objectKeys.get(actual);
          } 
          if (key == null)
          {
              setNumber(getNumber()+1);
              key = new COSObjectKey(getNumber(),0);
              objectKeys.put(obj, key);
              if( actual != null )
              {
                  objectKeys.put(actual, key);
              }
          }
          return key;
      }
      

        Attachments

          Activity

            People

            • Assignee:
              tilman Tilman Hausherr
              Reporter:
              Rahn2 Jonathan

              Dates

              • Created:
                Updated:
                Resolved:

                Issue deployment