2 回答
![?](http://img1.sycdn.imooc.com/545861c80001141e02200220-100-100.jpg)
TA贡献1780条经验 获得超1个赞
当然,PDF文件是一种容器格式,可以包含几乎所有内容,包括(仅)0页元数据。但是即使如此,使用此代码也可以在仅包含5页的文档上请求第21页的缩略图。
如果发生这种情况,此行将发生问题:
$img = new Imagick($src."[$page]");
如果提供的页面不存在,这将引发异常。您可以捕获该异常并根据需要进行处理:
try {
$img = new Imagick($src."[$page]");
} except (ImagickException $error) {
return false;
}
如果您想事先阅读页数,可以尝试让Imagick首先解析文档:
$pdf = new Imagick($src);
$pages = $pdf->getNumberImages();
函数名称有点误导,请参见PHP手册中的以下注释:
“对于PDF,此功能指示PDF上的页数,而不指示可能嵌入在PDF中的图像。”
同样,在这里,如果PDF文档在某种程度上无效,则可能引发异常,因此您可能想捕获并处理该异常:
try {
$pdf = new Imagick($src);
$pages = $pdf->getNumberImages();
} except (ImagickException $error) {
return false;
}
if ($pages < $page) {
return false;
}
![?](http://img1.sycdn.imooc.com/545847aa0001063202200220-100-100.jpg)
TA贡献1828条经验 获得超13个赞
PDF必须在其“页面树”中至少包含一页,因此您不能拥有有效的零页面PDF。如果您有这样的PDF,并且您的PDF软件将其视为有效文件并报告了零页,那么该软件将极具误导性。
如果我没有记错的话,在这种情况下,Acrobat会显示一个对话框,并显示一条错误消息,并且我想大多数其他PDF软件也会同样抱怨。
PDF的页面边界是由矩形定义的,矩形本身在我的规范中没有关于不允许宽度和/或高度为零的限制。尽管实际上来讲,拥有它是很奇怪的,而且大多数PDF软件可能会抱怨或绊倒它。
您当然可以拥有一个没有内容的PDF页面,例如,空白的8.5x11“页面是完全有效的。您可以使用该页面,也可以使用页面上的一些文本/图像,如果愿意,可以向用户表明您的错误。
- 2 回答
- 0 关注
- 260 浏览
添加回答
举报