【发布时间】:2018-04-26 23:08:35
【问题描述】:
我有一个脚本,它采用 base64 字符串并将其转换为 png 图像。然后我使用 Imagick 将 png 转换为使用 AdobeRGB1998 icc 配置文件的 pdf。这一切都按预期工作并创建了一个彩色pdf。
$data = str_replace("data:image/png;base64,","",$_POST["rsa"]);
$save = $path.$_POST["pdfname"].".png";
$imagick = new Imagick();
$decoded = base64_decode($data);
$imagick->readimageblob($decoded);
$imagick->writeImage($save);
$imagick->clear();
$imagick->destroy();
exec("convert $path.$_POST["pdfname"].".png -profile AdobeRGB1998.icc -density 300 ".$path.".$_POST["pdfname"].".pdf", $array);
但是,当我随后使用 Ghostscript 使用以下代码将这些 PDF 合并在一起时,它以灰度输出,我不知道为什么。
function getPDFs($e)
{
return $path.$e['pdffilename'].".pdf ";
}
$fileArray = array_map("getPDFs(", $_POST['item']);
$outputName = $path."LatestDispatch.pdf";
$cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outputName ";
foreach($fileArray as $file) {
$cmd .= $file." ";
}
$result = shell_exec($cmd);
我改用 Ghostscript 而不是 imagick 来合并 pdf。 Imagick 返回了一个合并的彩色 pdf,但似乎达到了一个限制,即有多少 PDF 的 imagick 能够一次合并。 Ghostscript 对于合并多少 PDF 没有任何问题或限制,因此我想继续使用这种方法而不是 Imagick,但是我需要解决 PDF 以灰度而不是彩色输出的问题。有人可以帮忙吗?
谢谢!
【问题讨论】:
标签: php ghostscript imagick