如何使用PHP从PDF提取图像

时间:2019-12-17 13:07:05

标签: pdf

我有一个pdf文件,我必须从中提取任何类型的图像并将其存储在S3中。请帮助我使用PHP或Linux命令或任何jar文件从PDF文件提取图像。

谢谢。

1 个答案:

答案 0 :(得分:0)

编辑:有一个简单的命令行工具pdfimageshttps://www.xpdfreader.com/pdfimages-man.html 但是,如果您更喜欢用普通的PHP进行操作,请尝试以下解决方案。

尝试使用smalot/pdfparser。首先,使用作曲家下载它:

composer require smalot/pdfparser

图像在PDF文件中存储为“ xobjects”。您需要提取所有xobject并检查其中哪些是图像:

<?php
include 'vendor/autoload.php';

use Smalot\PdfParser\Parser;
use Smalot\PdfParser\XObject\Image;

$parser = new Parser();
$pdf = $parser->parseFile('document.pdf');

$i = 0;
$xobjects = $pdf->getObjectsByType('XObject');
foreach ($xobjects as $xobject) {
    if ($xobject instanceof Image) {
        file_put_contents(++$i, $xobject->getContent());
    }
}

这是最简单的版本。但是,某些图像可能使用FlateDecode方法进行编码。您需要像这样修改foreach循环:

    if ($xobject instanceof Image) {
        $content = $xobject->getContent();
        if ('FlateDecode' === $xobject->getHeader()->getElements()['Filter']->getContent()) {
            $content = zlib_decode($content);
        }
        file_put_contents(++$i, $xobject->getContent());
    }