[英]Extract images from PDF page section
我需要从 PDF 页面部分提取图像。
例如,考虑有一个 PDF 页面,页面顶部有几个图像,页面底部有几个图像。 我想提取页面顶部的图像。
到目前为止,我尝试的是:
gs -o$croppedPdfFilepath -sDEVICE=pdfwrite -c "[/CropBox [31.46 690.22 560.54 839]" -c "/PAGES pdfmark" -sPageList=12 -f $originalPdfFilepath
pdfimages -j "$croppedPdfFilepath" $outputDirectory/image
但问题是pdfimages
正在提取该页面上的所有图像(从顶部和底部),即使当我查看裁剪后的 PDF 时它只有页面顶部的图像。
经过一些研究, CropBox
似乎只隐藏了视图中裁剪的内容,但 PDF 源仍然有内容。
从 PDF 页面或任何其他方法中删除内容的任何指导都会有所帮助。 我正在使用php
以编程方式执行此操作。
参考
如果您需要根据页面位置提取图像,您可以使用pdftohtml
非常轻松地完成此操作,方法是解析输出,然后使用其 xml 属性检查元素的位置。 这是一个非常基本的示例,如果图像距离顶部不到200
,则将图像的完整路径放入数组中:
$pdf = '/path/to/test.pdf';
$files = [];
$xml = shell_exec('pdftohtml -stdout -xml ' . $pdf);
$dom = new DOMDocument();
$dom->loadXml($xml);
$images = $dom->getElementsByTagName('image');
foreach ($images as $image) {
$top = $image->getAttribute('top');
if ($top < 200) {
$files[] = dirname($pdf) . '/' . $image->getAttribute('src');
}
}
print_r($files);
请注意,与pdftohtml
的手册页相反,它表明它“在当前工作目录中生成输出” ,我的经验是它总是在与正在读取的 pdf 相同的目录中生成输出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.