我正在使用ImageMagik尝试将PDF的内容转换为JPG,但不断获得一个空的jpg。我已经确定所有测试中的perms都是777,所以我有点迷失了如何继续。
这是我正在运行的脚本
<?php
exec('convert testfile.pdf output.jpg', $output, $return_var);
?>
答案 0 :(得分:6)
试试这个。
<?php
$pdf = 'testfile.pdf';
$save = 'output.jpg';
exec('convert "'.$pdf.'" -colorspace RGB -resize 800 "'.$save.'"', $output, $return_var);
?>
答案 1 :(得分:1)
使用二进制的绝对路径,如下所示:
exec('/usr/bin/convert testfile.pdf output.jpg', $output, $return_var);
但请确保您的convert
二进制文件实际上在/usr/bin
上,您可以使用以下命令检查它:
which convert
答案 2 :(得分:1)
convert -normalize yourfile.pdf[0] yourdestination.jpg
答案 3 :(得分:0)
ImageMagick内部使用GhostScript,通常ImageMagick的转换速度慢与Ghoastscript相比,所以如果您只想将转换pdf转换为图像,那么Ghostscript gs
命令会更快。
下面是我几天前写的Ghostscript示例包装器。
$pdflib = new ImalH\PDFLib\PDFLib();
$pdflib->setPdfPath($pdf_file_path);
$pdflib->setOutputPath($folder_path_for_images);
$pdflib->setImageQuality(95);
$pdflib->setDPI(300);
$pdflib->setPageRange(1,$pdflib->getNumberOfPages());
$pdflib->convert();
答案 4 :(得分:0)
在这里,你有我的解决方案。直接在php代码中使用Imagick。
将所有PDF页面转换为JPG
// create Imagick object
$imagick = new Imagick();
// Reads image from PDF
$imagick->readImage('file.pdf');
// Writes an image
$imagick->writeImages('converted.jpg', false);
将特定PDF页面转换为JPG
// create Imagick object
$imagick = new Imagick();
// Read image from PDF
$imagick->readImage('test.pdf[0]');
// Writes an image
$imagick->writeImages('converted_page_one.jpg');
解决此问题的另一种方法是使用 spatie / pdf-to-image 库。
干杯!