/** * Add an image to the file. * * @param string $url Url to the image * * @return int The reference of the image, false if the image couldn't be downloaded */ public function addImageFromUrl($url) { $image = ImageHandler::DownloadImage($url); if ($image === false) { return false; } return $this->addImage($image); }
/** * * @param DOMElement $dom * @return array */ private function handleImages($dom, $url) { $images = array(); $parts = parse_url($url); $savedImages = array(); $imgElements = $dom->getElementsByTagName('img'); foreach ($imgElements as $img) { $src = $img->getAttribute("src"); $is_root = false; if (substr($src, 0, 1) == "/") { $is_root = true; } $parsed = parse_url($src); if (!isset($parsed["host"])) { if ($is_root) { $src = http_build_url($url, $parsed, HTTP_URL_REPLACE); } else { $src = http_build_url($url, $parsed, HTTP_URL_JOIN_PATH); } } $img->setAttribute("src", ""); if (isset($savedImages[$src])) { $img->setAttribute("recindex", $savedImages[$src]); } else { $image = ImageHandler::DownloadImage($src); if ($image !== false) { $images[$this->imgCounter] = new FileRecord(new Record($image)); $img->setAttribute("recindex", $this->imgCounter); $savedImages[$src] = $this->imgCounter; $this->imgCounter++; } } } return $images; }
/** * Set the data to use * @param string $data Data to put in the file */ public function setData($data) { //$data = utf8_encode($data); $data = CharacterEntities::convert($data); //$data = utf8_decode($data); //$this->source = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $data); $images = array(); // image handling stuff $dom = new DOMDocument(); $dom->loadHTML($data) or die($data); $dom->normalizeDocument(); //exit(); $savedImages = array(); $imgElements = $dom->getElementsByTagName('img'); foreach ($imgElements as $img) { $src = $img->getAttribute("src"); $is_root = false; if (substr($src, 0, 1) == "/") { $is_root = true; } /*$parsed = parse_url($src); if(!isset($parsed["host"])){ if($is_root){ $src = http_build_url($url, $parsed, HTTP_URL_REPLACE); }else{ $src = http_build_url($url, $parsed, HTTP_URL_JOIN_PATH); } }*/ $img->setAttribute("src", ""); if (isset($savedImages[$src])) { $img->setAttribute("recindex", $savedImages[$src]); } else { $image = ImageHandler::DownloadImage($src); if ($image !== false) { $images[$this->imgCounter] = new FileRecord(new Record($image)); $img->setAttribute("recindex", $this->imgCounter); $savedImages[$src] = $this->imgCounter; $this->imgCounter++; } } } $this->images = $images; //end image stuff $data = $dom->saveXML(); $data = str_replace("<pagebreak/>", "<mbp:pagebreak/>", $data); $data = str_replace("<pagebreak></pagebreak>", "<mbp:pagebreak/>", $data); // echo $data; // print_r($this->images); $this->source = $data; $this->prc = false; }