我有一个pdf文件,我必须从中提取任何类型的图像并将其存储在S3中。请帮助我使用PHP或Linux命令或任何jar文件从PDF文件提取图像。
谢谢。
答案 0 :(得分:0)
编辑:有一个简单的命令行工具pdfimages
:https://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());
}