Changeset View
Changeset View
Standalone View
Standalone View
src/applications/phortune/pdf/PhabricatorPDFTailFragment.php
- This file was added.
| <?php | |||||
| final class PhabricatorPDFTailFragment | |||||
| extends PhabricatorPDFFragment { | |||||
| private $iterator; | |||||
| public function setIterator(PhabricatorPDFIterator $iterator) { | |||||
| $this->iterator = $iterator; | |||||
| return $this; | |||||
| } | |||||
| public function getIterator() { | |||||
| return $this->iterator; | |||||
| } | |||||
| protected function writeFragment() { | |||||
| $iterator = $this->getIterator(); | |||||
| $generator = $iterator->getGenerator(); | |||||
| $objects = $generator->getObjects(); | |||||
| $xref_offset = null; | |||||
| $this->writeLine('xref'); | |||||
| $this->writeLine('0 %d', count($objects) + 1); | |||||
| $this->writeLine('%010d %05d f ', 0, 0xFFFF); | |||||
| $offset_map = array(); | |||||
| $fragment_offsets = $iterator->getFragmentOffsets(); | |||||
| foreach ($fragment_offsets as $fragment_offset) { | |||||
| $fragment = $fragment_offset->getFragment(); | |||||
| $offset = $fragment_offset->getOffset(); | |||||
| if ($fragment === $this) { | |||||
| $xref_offset = $offset; | |||||
| } | |||||
| if (!$fragment->hasRefTableEntry()) { | |||||
| continue; | |||||
| } | |||||
| $offset_map[$fragment->getObjectIndex()] = $offset; | |||||
| } | |||||
| ksort($offset_map); | |||||
| foreach ($offset_map as $offset) { | |||||
| $this->writeLine('%010d %05d n ', $offset, 0); | |||||
| } | |||||
| $this->writeLine('trailer'); | |||||
| $this->writeLine('<<'); | |||||
| $this->writeLine('/Size %d', count($objects) + 1); | |||||
| $info_object = $generator->getInfoObject(); | |||||
| if ($info_object) { | |||||
| $this->writeLine('/Info %d 0 R', $info_object->getObjectIndex()); | |||||
| } | |||||
| $catalog_object = $generator->getCatalogObject(); | |||||
| if ($catalog_object) { | |||||
| $this->writeLine('/Root %d 0 R', $catalog_object->getObjectIndex()); | |||||
| } | |||||
| $this->writeLine('>>'); | |||||
| $this->writeLine('startxref'); | |||||
| $this->writeLine('%d', $xref_offset); | |||||
| $this->writeLine('%s', '%%EOF'); | |||||
| } | |||||
| } | |||||