php 快速获取pdf的页数

一般的获取pdf的页数方法,无非遍历二进制文件,匹配 page 等,最大的问题就是在需要遍历一次pdf,当文件大小达到百M的时候,响应速度过慢,内存 cpu消耗过大

Posted by 昆山吴彦祖 on 2019.10.17

国外论坛上找到一个比较高明的办法:通过php中引入linux可执行文件来获取pdf附属信息,直接获取页数而不去遍历pdf


// Make a function for convenience 
function getPDFPages($document)
{
    $cmd = "/path/to/pdfinfo";           // Linux
    $cmd = "C:\\path\\to\\pdfinfo.exe";  // Windows

    // Parse entire output
    // Surround with double quotes if file name has spaces
    exec("$cmd \"$document\"", $output);

    // Iterate through lines
    $pagecount = 0;
    foreach($output as $op)
    {
        // Extract the number
        if(preg_match("/Pages:\s*(\d+)/i", $op, $matches) === 1)
        {
            $pagecount = intval($matches[1]);
            break;
        }
    }

    return $pagecount;
}

// Use the function
echo getPDFPages("test 1.pdf");  // Output: 13


相关的composer库也有人做了,更方便了

pdf