2014-05-27 4 views
0

Вот код:как я установить изображение на высокое качество при конвертации в PCL с использованием PHP Imagick (ImageMagick)

$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 принтер на стороне клиента , выход нечеткий. PDF не является нечетким при печати через драйвер Windows. Что делает драйвер, которого я не делаю, чтобы убедиться, что вывод PCL понятен?

+0

Лучшая догадка - PDF - это векторный формат текста, PCL - это двухцветный (черно-белый) растровый рисунок - вам действительно нужно, действительно, до DPI, чтобы текст был чистым, как 1200+ DPI IIRC ... это означает ваш PCL должен быть намного больше, чем оригинальный PDF. – CD001

+0

Printint, используя Windows, печатает как вектор, этот код создает растровые (растровые) изображения со страниц '$ im-> getImageBlob()'. Вы теряете качество. Вопрос должен быть «как установить высокое качество изображения при преобразовании в PCL с помощью PHP Imagick (ImageMagick)?» –

+0

спасибо. задал вопрос. – jtmanteo

ответ

1

ОК, поэтому я нашел сценарий оболочки, который вызывает ghostscript со всеми необходимыми параметрами здесь: 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. Я могу открыть сокет на сервере печати RAW (порт 9100) для принтера PCL и написать $ pcl_data прямо на него, и он работает. Надеюсь это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^