support for wmf and emf image formats

Jan 11, 2012 at 8:58 PM

Hi alltogether,

I have extended some scripts and now I have managed to habe support for two vectorial graphic formats: emf and wmf.

Here ma changes:

File: Writer\Word2007.php, line173:

    private function _chkContentTypes($src) {
        $srcInfo   = pathinfo($src);
        $extension = strtolower($srcInfo['extension']);
        if(substr($extension, 0, 3) == 'php') {
            $extension = 'php';
        }
        $_supportedImageTypes = array('jpg', 'jpeg', 'gif', 'png', 'bmp', 'tif', 'tiff', 'php', 'eps', 'pdf', 'wmf', 'emf');
       
        if(in_array($extension, $_supportedImageTypes)) {
            $imagedata = getimagesize($src);
            $imagetype = image_type_to_mime_type($imagedata[2]);
            $imageext = image_type_to_extension($imagedata[2]);
            $imageext = str_replace('.', '', $imageext);
            if($extension == 'eps' || $extension == 'pdf')
            {
                $imagetype = 'image/x-eps';
                $this->_imageTypes[$extension] = $imagetype;
            }
            elseif($extension == 'wmf' || $extension == 'emf')
            {
                $imagetype = 'image/x-emf';
                $this->_imageTypes[$extension] = $imagetype;
            }
            else
            {
                if($imageext == 'jpeg') $imageext = 'jpg';
               
                if(!in_array($imagetype, $this->_imageTypes)) {
                    $this->_imageTypes[$imageext] = $imagetype;
                }
            }
        } else {
            if(!in_array($extension, $this->_objectTypes)) {
                $this->_objectTypes[] = $extension;
            }
        }
    }

 

File: Section\Image.php, line: 73:

    /**
     * Create a new Image
     *
     * @param string $src
     * @param mixed style
     */
    public function __construct($src, $style = null, $isWatermark = false) {
        $_supportedImageTypes = array('jpg', 'jpeg', 'gif', 'png', 'bmp', 'tif', 'tiff', 'eps', 'pdf', 'wmf', 'emf');
       
        $inf = pathinfo($src);
        $ext = strtolower($inf['extension']);
       
        if(file_exists($src) && in_array($ext, $_supportedImageTypes)) {
            $this->_src = $src;
            $this->_isWatermark = $isWatermark;
            $this->_style = new PHPWord_Style_Image();
           
            if(!is_null($style) && is_array($style)) {
                foreach($style as $key => $value) {
                    if(substr($key, 0, 1) != '_') {
                        $key = '_'.$key;
                    }
                    $this->_style->setStyleValue($key, $value);
                }
            }
           
            if($this->_style->getWidth() == null && $this->_style->getHeight() == null) {
                $imgData = getimagesize($this->_src);
                $this->_style->setWidth((int)$imgData[0]);
                $this->_style->setHeight((int)$imgData[1]);
            }
           
            return $this;
        } else {
            return false;
        }
    }

 

I home someone will be so kind to merge them in the main development trunk.

Kind regards,

imacovei