繁体   English   中英

从 PDF 页面部分提取图像

[英]Extract images from PDF page section

我需要从 PDF 页面部分提取图像。

例如,考虑有一个 PDF 页面,页面顶部有几个图像,页面底部有几个图像。 我想提取页面顶部的图像。

到目前为止,我尝试的是:

  • 使用 ghostscript 裁剪 pdf - gs -o$croppedPdfFilepath -sDEVICE=pdfwrite -c "[/CropBox [31.46 690.22 560.54 839]" -c "/PAGES pdfmark" -sPageList=12 -f $originalPdfFilepath
  • 然后将裁剪后的图像传递给 pdfimages 以提取图像 - 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM