簡體   English   中英

使用Ghostscript輸出將PDF合並為灰度/失去顏色

[英]Merging PDF's using Ghostscript outputs as grayscale / loses color

我有一個腳本,它使用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輸出的灰度問題,而不是彩色問題。 有人可以幫忙嗎?

謝謝!

第一; Ghostscript不會“合並” PDF文件。 當您以PDF文件列表作為輸入呈現它,並使用pdfwrite設備輸出單個PDF文件時,它不是“合並” PDF文件。

發生的情況是,每個PDF文件都會被完全解釋以產生一系列標記操作,然后將這些操作傳遞給設備。 對於渲染設備,它們渲染位圖。 對於PDF輸出,它們作為PDF等效操作發出。

因此,輸出PDF文件的內容與輸入文件的內容無關。 外觀應該相同,但不能“合並”。

您還沒有說過使用的是哪個版本的Ghostscript,或從何處獲得的(甚至是使用的是什么操作系統,但我想有些Linux的味道)。 命令行顯然沒有任何問題,但是如果您是我,那么我將從不使用腳本開始。 只需從shell手動使用Ghostscript看看會發生什么。 如果可行,則該腳本不起作用,則該腳本有問題,並且您沒有從shell正確模仿它。 讓腳本打印出精確的命令行,然后嘗試查看您在shell上鍵入的內容是否有所不同。

如果行為相同,則令人困惑。 但是,如果沒有一些示例可供參考,我無能為力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM