PHP Get height and width in Pdf file proprieties

后端 未结 4 1053
孤街浪徒
孤街浪徒 2020-12-06 08:06

I have a PDF file. I would to get it height and width in mm.

So I do an exec(pdfinfo ... ); I have this result :

Creator: Adobe InDesign CS5 (

相关标签:
4条回答
  • 2020-12-06 08:42

    Why not use plain PHP to get the pdf dimensions?

    <?php
    function get_pdf_dimensions($path, $box="MediaBox") {
        //$box can be set to BleedBox, CropBox or MediaBox 
    
        $stream = new SplFileObject($path); 
    
        $result = false;
    
        while (!$stream->eof()) {
            if (preg_match("/".$box."\[[0-9]{1,}.[0-9]{1,} [0-9]{1,}.[0-9]{1,} ([0-9]{1,}.[0-9]{1,}) ([0-9]{1,}.[0-9]{1,})\]/", $stream->fgets(), $matches)) {
                $result["width"] = $matches[1];
                $result["height"] = $matches[2]; 
                break;
            }
        }
    
        $stream = null;
    
        return $result;
    }
    
    var_dump(get_pdf_dimensions("file.pdf"));
    
    0 讨论(0)
  • 2020-12-06 08:43

    Do it with a preg_match():

    // Debugging:
    $output = shell_exec("pdfinfo ".$pdflivrelink);
    var_dump($output);
    
    // Dimension:
    preg_match('~ Page size: ([0-9\.]+) x ([0-9\.]+) pts ~', $output, $matches);
    var_dump($matches);
    
    
    // No of pages:
    preg_match('~ Pages ([0-9]+) ~', $output, $matches);
    var_dump($matches);
    
    0 讨论(0)
  • A little regex will get you the correct results.

    <?php
    $str = 'Creator: pdftk 1.41 - www.pdftk.com Producer: iText 2.1.5 (by lowagie.com) CreationDate: Mon Feb 27 13:18:23 2012 ModDate: Mon Feb 27 16:26:12 2012 Tagged: no Pages: 36 Encrypted: no Page size: 425.2 x 538.582 pts File size: 5097597 bytes Optimized: yes PDF version: 1.6';
    
    preg_match('/Page size: ([0-9]*\.?[0-9]?) x ([0-9]*\.?[0-9]?)/', $str, $matches);
    $width = round($matches[1]/2.83);
    $height = round($matches[2]/2.83);
    
    echo "width = $width<br>height = $height";
    ?>
    

    Update ( asked for more details ) : Complete working example below. I've updated Regex to match real output from pdfinfo

    <?php
    
    $output = shell_exec("pdfinfo ".$pdflivrelink);
    
    // find page count
    preg_match('/Pages:\s+([0-9]+)/', $output, $pagecountmatches);
    $pagecount = $pagecountmatches[1];
    
    // find page sizes
    preg_match('/Page size:\s+([0-9]{0,5}\.?[0-9]{0,3}) x ([0-9]{0,5}\.?[0-9]{0,3})/', $output, $pagesizematches);
    $width = round($pagesizematches[1]/2.83);
    $height = round($pagesizematches[2]/2.83);
    
    echo "pagecount = $pagecount <br>width = $width<br>height = $height";
    
    ?>
    
    0 讨论(0)
  • 2020-12-06 09:05

    Since you know the format of the size string, you can also do it like below. (This function returns width and height in an array.)

    function size_pdf($size){
        $result = array();
        $tmp = exlode('x', $size);
        $result['height'] = round(trim($tmp[0])/2.83);
        $result['width'] = round(trim($tmp[1])/2.83);
    
        return $result;
    }
    
    0 讨论(0)
提交回复
热议问题