Пример #1
0
 /**
  * @param  IndirectObject $indirectObject
  * @return ObjectInterface
  */
 public function getObject(IndirectObject $indirectObject)
 {
     if ($indirectObject->getObjectStorage() !== $this) {
         throw new DomainException('Object storage of indirect object must equal this object storage');
     }
     return $this->objects[$indirectObject->getId()];
 }
Пример #2
0
 /**
  * Writes all objects.
  *
  * @param  SplFileObject $fileObject
  * @return array
  */
 private function writeObjects(SplFileObject $fileObject)
 {
     $objectOffsets = [];
     foreach ($this->objects as $object) {
         $indirectObject = $this->objects->getIndirectObject($object);
         $id = $indirectObject->getId();
         $objectOffsets[] = $fileObject->ftell();
         $fileObject->fwrite(sprintf("%d 0 obj\n", $id));
         $key = null;
         if (null !== $this->encrypt && $id !== $this->encrypt->getId()) {
             $key = substr(hex2bin(md5($this->encryptionKey . substr(pack('V', $id), 0, 3) . substr(pack('V', $indirectObject->getGeneration()), 0, 2))), 0, min(16, strlen($this->encryptionKey) + 5));
         }
         $object->writeToStream($fileObject, $key);
         $fileObject->fwrite("\nendobj\n");
     }
     return $objectOffsets;
 }