@Override
 public String toPDFString() {
   StringBuilder sb = new StringBuilder();
   sb.append(mHeader.toPDFString());
   sb.append(mBody.toPDFString());
   mCRT.setObjectNumberStart(mBody.getObjectNumberStart());
   int x = 0;
   while (x < mBody.getObjectsCount()) {
     IndirectObject iobj = mBody.getObjectByNumberID(++x);
     if (iobj != null) {
       mCRT.addObjectXRefInfo(iobj.getByteOffset(), iobj.getGeneration(), iobj.getInUse());
     }
   }
   mTrailer.setObjectsCount(mBody.getObjectsCount());
   mTrailer.setCrossReferenceTableByteOffset(sb.length());
   mTrailer.setId(Indentifiers.generateId());
   return sb.toString() + mCRT.toPDFString() + mTrailer.toPDFString();
 }