php在线读取pdf文件大小_PHP在Pdf文件中获取高度和宽度

本文介绍了如何使用PHP通过shell_exec()和正则表达式从pdfinfo命令的输出中准确获取PDF文件的高度和宽度,解决了因不同格式导致的脚本失效问题。
摘要由CSDN通过智能技术生成

我有一个PDF文件.

我会以mm为单位得到它的高度和宽度.

所以我做了一个exec(pdfinfo …);

我有这个结果:

Creator: Adobe InDesign CS5 (7.0.3) Producer: Acrobat Distiller 9.4.2 (Macintosh) CreationDate: Mon Jan 30 15:48:43 2012 ModDate: Fri Feb 10 10:35:05 2012 Tagged: no Pages: 34 Encrypted: no Page size: 552.744 x 708.643 pts File size: 80724791 bytes Optimized: yes PDF version: 1.3

我有一个脚本女巫提取我的信息:

$output = shell_exec("pdfinfo ".$pdflivrelink);

$data = explode("\n", $output); //puts it into an array

for($c=0; $c < count($data); $c++) {

if(stristr($data[$c],"Pages") == true) {

$pagesnumber = trim(substr($data[$c],6));

}

if(stristr($data[$c],"Page size") == true) {

$pagesize_H = height_pdf(trim(substr($data[$c],9)));

}

if(stristr($data[$c],"Page size") == true) {

$pagesize_L = width_pdf(trim(substr($data[$c],9)));

}

}

function height_pdf($size){

$hauteur = round(substr($size,7,7)/2.83);

return $hauteur;

}

function width_pdf($size){

$largeur = round(substr($size,17,7)/2.83);

return $largeur;

} ?>

没关系,因为我有三个数字点三个数字(552.744 x 708.643).

但是,我不知道为什么,一些PDF文件有这个信息:

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

425.2 x 538.582:所以我的脚本不起作用!

你能帮助我吗?非常感谢!

我测试一下:

$output = shell_exec("pdfinfo ".$pdflivrelink);

$data = explode("\n", $output); //puts it into an array

for($c=0; $c < count($data); $c++) {

if(stristr($data[$c],"Pages") == true) {

$pagesnumber = trim(substr($data[$c],6));

}

if(stristr($data[$c],"Page size") == true) {

echo $data[$c];

preg_match('/Page size: ([0-9]*\.?[0-9]?) x ([0-9]*\.?[0-9]?)/', $data[$c], $matchess);

$width = round($matchess[1]/2.83);

$height = round($matchess[2]/2.83);

}

}

echo "width = $width
height = $height";

结果:

Page size: 425.2 x 538.582 ptswidth = 0 height = 0

解决方法:

一点正则表达式会得到正确的结果.

$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
height = $height";

?>

更新(询问更多详情):

完整的工作示例如下.我已经更新了Regex以匹配pdfinfo的实际输出

$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
width = $width
height = $height";

?>

标签:php,pdf,width,get,height

来源: https://codeday.me/bug/20190927/1823378.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PdfParser 是一个 PHP 库,可以用于读取 PDF 文件的内容。它可以将 PDF 文件解析成一个包含文本、字体、颜色等信息的对象结构。在使用 PdfParser 之前,需要先安装 Composer,然后使用 Composer 安装 PdfParser。 安装 Composer Composer 是 PHP 的一个依赖管理工具,可以用于安装和管理 PHP 库。在安装 PdfParser 之前,需要先安装 Composer。可以在 Composer 的官网上下载最新的安装包,也可以使用命令行进行安装。这里介绍使用命令行进行安装的方法。 在终端输入以下命令: ``` php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php php -r "unlink('composer-setup.php');" ``` 这些命令将会从 Composer 的官网上下载安装脚本,然后运行该脚本进行安装。安装完成后,可以在命令行输入 `composer` 命令来验证是否安装成功。 安装 PdfParser 安装完成 Composer 后,可以使用 Composer 来安装 PdfParser。在终端执行以下命令: ``` composer require andrewsville/php-pdf-parser ``` 这些命令将会从 Packagist 上下载并安装 PdfParser 库。 读取 PDF 文件 安装完成 PdfParser 后,就可以使用它来读取 PDF 文件了。以下是一个简单的示例,演示了如何读取 PDF 文件的内容: ```php <?php require_once 'vendor/autoload.php'; use Smalot\PdfParser\Parser; $parser = new Parser(); $pdf = $parser->parseFile('example.pdf'); $text = $pdf->getText(); echo $text; ``` 在上面的代码,首先使用 `Parser` 类创建一个解析器对象,然后使用 `parseFile` 方法将 PDF 文件解析成一个对象。最后,使用 `getText` 方法获取 PDF 文件的文本内容,并将其输出到屏幕上。 需要注意的是,PdfParser 只能读取 PDF 文件的文本内容。如果 PDF 文件包含图片或其他非文本内容,PdfParser 将无法读取这些内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值