我花了很多时间寻找一种快速简便但却非常准确的方法来获取PDF文档中的页数.由于我在一家使用PDF工作的图形打印和复制公司工作,因此在处理文档之前必须准确了解文档中的页数.PDF文档来自许多不同的客户端,因此它们不是使用相同的应用程序生成的和/或不使用相同的压缩方法.
以下是我发现的一些不足或根本不工作的答案:
Imagick需要大量的安装,apache需要重新启动,当我最终使用它时,处理时间非常长(每个文档2-3分钟)并且它总是1
在每个文档中返回页面(没有看到工作副本到目前为止,Imagick,所以我扔掉了.那是getNumberImages()
和identifyImage()
方法.
FPDI易于使用和安装(只提取文件并调用PHP脚本),但 FPDI不支持许多压缩技术.然后它返回一个错误:
FPDF错误:此文档(test_1.pdf)可能使用FPDI附带的免费解析器不支持的压缩技术.
这将在流中打开PDF文件,并搜索某种类型的字符串,其中包含pagecount或类似的内容.
$f = "test1.pdf";
$stream = fopen($f, "r");
$content = fread ($stream, filesize($f));
if(!$stream || !$content)
return 0;
$count = 0;
// Regular Expressions found by Googling (all linked to SO answers):
$regex = "/\/Count\s+(\d+)/";
$regex2 = "/\/Page\W*(\d+)/";
$regex3 = "/\/N\s+(\d+)/";
if(preg_match_all($regex, $content, $matches))
$count = max($matches);
return $count;
Run Code Online (Sandbox Code Playgroud)
/\/Count\s+(\d+)/
(查找 …我需要一种方法来计算PHP中PDF的页数.我做了一些谷歌搜索,我发现的唯一的东西要么使用shell/bash脚本,perl或其他语言,但我需要原生PHP的东西.有没有图书馆或如何做到这一点的例子?