Forum


Replies: 5   Views: 4436
Picture size is not 100%
Topic closed:
Please note this is an old forum thread. Information in this post may be out-to-date and/or erroneous.
Every phpdocx version includes new features and improvements. Previously unsupported features may have been added to newer releases, or past issues may have been corrected.
We encourage you to download the current phpdocx version and check the Documentation available.

Posted by anzai408  · 24-02-2014 - 05:33

Hi, does any one know how to remain the picture size to 100%? I facing a proble here is when I use replaceTemplateVariableByHTML and downloadImages is set to true but when the image come to document is displayed as 76% of the original size so I need to manually right-click the picture -> size and click the reset button under the size. Now only the picture diplayed in 100%, but this is very troublesome when I have 100 of pictures there. Got any solutions that able to remain the picture original size when the doc file is generating or not?



Thanks in advanced.


Posted by jorgelj  · 24-02-2014 - 09:07

Hello,



What version of PHPDocX are you using?



Regards.


Posted by anzai408  · 24-02-2014 - 11:21

Pro trial


Posted by ellytronic  · 20-03-2014 - 08:20

I just wrote a function for this earlier tonight. This gets the image size from the server, and checks if it is too large and/or too wide to fit on the word document. It then finds the appropriate scaling factor to size it either at 100% width, height auto, or height 100%, width auto, depending on which ratio is bigger. Word uses 96dpi for images, so all the math is based off that.



 



   getScalingFactor( $imgDimension, $docDimension ) {

      return 99 - ( ( $docDimension / $imgDimension ) * 100 );

   }

   

    if( in_array( $file_data['extension'], $allowed_images ) ) {

        //get image data

        list( $imgWidth, $imgHeight ) = $image_sizes = getimagesize( $file_to_append );

        //max doc sizes at 96dpi

        $docWidth = 718;

        $docHeight = 1122;

        $widthDif = 0;

        $heightDif = 0;

        $widthDif = $imgWidth - $docWidth;

        $heightDif = $imgHeight - $docHeight;



        //get scaling number

        if( $heightDif > 0 && $widthDif >0 ) {

            //both are oversized, which is bigger?

            if( $heightDif >= $widthDif ) {

                //height >= width, scale by height

                $scaling = getScalingFactor( $imgHeight, $docHeight );

            } else {

                //width > height, scale by width

                $scaling = getScalingFactor( $imgWidth, $docWidth );

            }



        } elseif( $heightDif > 0 ) {

            //height has a larger difference than height. Let's scale to match

            $scaling = $func->getScalingFactor( $imgHeight, $docHeight );

        } elseif( $widthDif > 0 ) {

            //width has a larger difference than height. Let's scale to match

            $scaling = $func->getScalingFactor( $imgWidth, $docWidth );

        } else {

            $scaling = 100;

        }



        //prep the options

        $imgOptions = array(

            'name' => $file_to_append,

            'scaling' => $scaling,

            'dpi' => 96,

            //'sizeX' => '718px',

            //'sizeY' => '1122px',

            'spacingTop' => 0,

            'spacingBottom' => 0,

            'spacingLeft' => 0,

            'spacingRight' => 0,

            'textWrap' => 0,

            'border' => 0,

            'borderDiscontinuous' => 1

        );

        

        //create and add the image to a document

        $docx = new createDocx();

        $docx->addImage( $imgOptions );            

        $docOptions = array(

            'marginTop' => 0,

            'marginRight' => 0,

            'marginBottom' => 0,

            'marginLeft' => 0,

            'marginHeader' => 0,

            'marginFooter' => 0

            );

        $docx->modifyPageLayout( 'A4', $docOptions );

        $docx->createDocx( 'one-page-with-image-spanning-fully' );

    }