0

这是代码:

$im=new Imagick();
$im->readImageBlob($pdf_data);
$im->setImageFormat('pcl');
$b64pages = array();
for ($x = 1;$x <= $im->getNumberImages(); $x++) {
    $im->previousImage();
    $pclpage = $im->getImageBlob();
    $b64page = base64_encode($pclpage);
    $b64pages[] = $b64page;
    $count--;
}

当我将生成的 PCL 图像直接发送到客户端的 PCL 打印机时,输出是模糊的。通过 Windows 驱动程序打印时,PDF 不模糊。驱动程序在做什么我没有做以确保 PCL 输出清晰?

4

1 回答 1

1

好的,所以我在这里找到了一个使用所有正确参数调用 ghostscript 的 shell 脚本:https ://gist.github.com/ongardie/6800587 。我在我的服务器上安装了它。现在我的文件格式转换php代码如下:

chdir("../pdf_to_pcl");
$ident = uniqid();
$pdf_filename = $ident.".pdf";
$pdf_file = fopen($pdf_filename,'w+');
fwrite($pdf_file,$pdf_data);
fclose($pdf_file);

exec("./pdf2pcl $pdf_filename");

$pcl_filename = $ident.".pcl";
$pcl_file = fopen($pcl_filename,"r+");
while($dt = fread($pcl_file,4096)) {
    $pcl_data .= $dt;    
}

fclose($pcl_file);
unlink($pdf_filename);
unlink($pcl_filename);

我正在转换的图像数据在 $pdf_data 中。pcl 格式的数据在 $pcl_data 中。我可以为 PCL 打印机打开一个到 RAW 打印服务器(端口 9100)的套接字并将 $pcl_data 直接写入它并且它可以工作。希望这可以帮助。

于 2014-05-30T18:28:06.880 回答