簡體   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