/** * @return HTMLElement */ public function parseParagraph() { $paragraphContainer = new HTMLElement(HTMLElement::P); $runs = $this->getRuns(); foreach ($runs as $run) { $xwpfRun = new XWPFRun($run, $this->mainStyleSheet); $runContainer = $xwpfRun->parseRun(); $paragraphContainer->addInnerElement($runContainer); } return $paragraphContainer; }
/** * @param $charRuns * @param $container */ private function parseRuns($charRuns, $container) { $prevCharRunHTMLElement = null; // for ($j = 0; $j < count($charRuns); $j++) { foreach ($charRuns as $charRun) { if (java_instanceof($charRun, java('org.apache.poi.xwpf.usermodel.XWPFRun'))) { $characterRun = $charRun; $pictures = java_values($characterRun->getEmbeddedPictures()); //$charRunHTMLElement = $this->parseCharacterRun($characterRun); $run = new XWPFRun($characterRun, $this->mainStyleSheet); $charRunHTMLElement = $run->parseRun(); // Check if this is a picture if (count($pictures) > 0) { $container->addInnerElement($charRunHTMLElement); $prevCharRunHTMLElement = clone $charRunHTMLElement; // This part is needed in order to merge similar SPAN tags in one, if they have same // style (this will also prevent unneeded spaces) } else { if (@isset($prevCharRunHTMLElement) && $charRunHTMLElement->getClass() == $prevCharRunHTMLElement->getClass()) { $container->getLastElement()->addInnerText($charRunHTMLElement->getInnerText()); // The rest of elements } else { $container->addInnerElement($charRunHTMLElement); $prevCharRunHTMLElement = clone $charRunHTMLElement; } } } else { var_dump($charRun); } } }