Ejemplo n.º 1
0
 private function _writeTOC(PHPWord_Shared_XMLWriter $objWriter = null)
 {
     $titles = PHPWord_TOC::getTitles();
     $styleFont = PHPWord_TOC::getStyleFont();
     $styleTOC = PHPWord_TOC::getStyleTOC();
     $fIndent = $styleTOC->getIndent();
     $tabLeader = $styleTOC->getTabLeader();
     $tabPos = $styleTOC->getTabPos();
     $isObject = $styleFont instanceof PHPWord_Style_Font ? true : false;
     for ($i = 0; $i < count($titles); $i++) {
         $title = $titles[$i];
         $indent = ($title['depth'] - 1) * $fIndent;
         $objWriter->startElement('w:p');
         $objWriter->startElement('w:pPr');
         if ($isObject && !is_null($styleFont->getParagraphStyle())) {
             $this->_writeParagraphStyle($objWriter, $styleFont->getParagraphStyle());
         }
         if ($indent > 0) {
             $objWriter->startElement('w:ind');
             $objWriter->writeAttribute('w:left', $indent);
             $objWriter->endElement();
         }
         if (!empty($styleFont) && !$isObject) {
             $objWriter->startElement('w:pPr');
             $objWriter->startElement('w:pStyle');
             $objWriter->writeAttribute('w:val', $styleFont);
             $objWriter->endElement();
             $objWriter->endElement();
         }
         $objWriter->startElement('w:tabs');
         $objWriter->startElement('w:tab');
         $objWriter->writeAttribute('w:val', 'right');
         if (!empty($tabLeader)) {
             $objWriter->writeAttribute('w:leader', $tabLeader);
         }
         $objWriter->writeAttribute('w:pos', $tabPos);
         $objWriter->endElement();
         $objWriter->endElement();
         $objWriter->endElement();
         // w:pPr
         if ($i == 0) {
             $objWriter->startElement('w:r');
             $objWriter->startElement('w:fldChar');
             $objWriter->writeAttribute('w:fldCharType', 'begin');
             $objWriter->endElement();
             $objWriter->endElement();
             $objWriter->startElement('w:r');
             $objWriter->startElement('w:instrText');
             $objWriter->writeAttribute('xml:space', 'preserve');
             $objWriter->writeRaw('TOC \\o "1-9" \\h \\z \\u');
             $objWriter->endElement();
             $objWriter->endElement();
             $objWriter->startElement('w:r');
             $objWriter->startElement('w:fldChar');
             $objWriter->writeAttribute('w:fldCharType', 'separate');
             $objWriter->endElement();
             $objWriter->endElement();
         }
         $objWriter->startElement('w:hyperlink');
         $objWriter->writeAttribute('w:anchor', $title['anchor']);
         $objWriter->writeAttribute('w:history', '1');
         $objWriter->startElement('w:r');
         if ($isObject) {
             $this->_writeTextStyle($objWriter, $styleFont);
         }
         $objWriter->startElement('w:t');
         $objWriter->writeRaw($title['text']);
         $objWriter->endElement();
         $objWriter->endElement();
         $objWriter->startElement('w:r');
         $objWriter->writeElement('w:tab', null);
         $objWriter->endElement();
         $objWriter->startElement('w:r');
         $objWriter->startElement('w:fldChar');
         $objWriter->writeAttribute('w:fldCharType', 'begin');
         $objWriter->endElement();
         $objWriter->endElement();
         $objWriter->startElement('w:r');
         $objWriter->startElement('w:instrText');
         $objWriter->writeAttribute('xml:space', 'preserve');
         $objWriter->writeRaw('PAGEREF ' . $title['anchor'] . ' \\h');
         $objWriter->endElement();
         $objWriter->endElement();
         $objWriter->startElement('w:r');
         $objWriter->startElement('w:fldChar');
         $objWriter->writeAttribute('w:fldCharType', 'end');
         $objWriter->endElement();
         $objWriter->endElement();
         $objWriter->endElement();
         // w:hyperlink
         $objWriter->endElement();
         // w:p
     }
     $objWriter->startElement('w:p');
     $objWriter->startElement('w:r');
     $objWriter->startElement('w:fldChar');
     $objWriter->writeAttribute('w:fldCharType', 'end');
     $objWriter->endElement();
     $objWriter->endElement();
     $objWriter->endElement();
 }