Náhledy PDF pomocí Imagick
- Vyki
- Člen | 388
Neznáte prosím děkdo způsob jak rozchodit tvorbu náhledů PDF pomocí třídy Imagick. Něco jsem o tom našel zde, ale to mi fungovat nechce. Problém je už v konstruktoru.
<?php
$im = new imagick('test.pdf[0]');
//hází Uncaught exception 'ImagickException' with message 'Postscript delegate failed `plakat_2.pdf'' in /www/doc/stranky.tld/www/test/a.php:3
$im = new imagick('test.pdf');
//hází ncaught exception 'ImagickException' with message 'Wand contains no images `MagickWand-2'' in /www/doc/stranky.tld/www/test/a.php:3
?>
Není to dáno ani cestou PDFku ani PDFkem samotným, zkoušel jsem několik
PDF, kde byly poze obrázky. Nemáte někdo s touto problematikou zkušenosti?
Díky
Edit: stejně tak nejde ani
<?php
$im = new imagick();
$im->setResolution(300, 300);
$im->readImage('test.pdf[0]'); //ani $im->readImage('test.pdf[1]') ani $im->readImage('test.pdf')
?>
Nejde mi to ani na jdnom hostingu – testováno na PHP 5.2 u Active24 a PHP 5.3 u Onebit EDIT: Jinak tvorba náhledů velkých fotek, kde také Imagick používám šlape v pohodě.
Editoval Vyki (18. 4. 2010 15:19)
- Vyki
- Člen | 388
Tak problém je vyřešen. Správci serveru to museli krapet poštelovat a nakonfigurovat. Běhá to výborně. Když je obrázků více jde mezi nimi díky iterátoru ve třídě imagick přecházet např. foreachem. Extrahování celého PDF provádím nyní takto.
<?php
$pdf = new Imagick();
$pdf->readImage('soubor.pdf');
foreach($pdf as $index => $image)
{
$image->setCompression(Imagick::COMPRESSION_JPEG);
$image->setCompressionQuality(80);
$image->setImageFormat('jpeg');
$image->resizeImage(850, 650, Imagick::FILTER_LANCZOS, 1 , TRUE);
$image->writeImage("ext/$index.jpg");
}
$pdf->destroy();
?>
Je to šikovná hračka, bohužel to nemají ne na jednom hostingu správně nastaveno. Ze čtyřech hostingů mi to běhá pouze na Onebitu a to až od dneška.
Editoval Vyki (23. 4. 2010 21:55)
- Vyki
- Člen | 388
Psal jsem jim, že by mě ze zajímalo, kde byl zakopanej pes, ale na to mi neodpověděli. Když jsem si s nimi v průběhu několika dnů psal, tak se zmínili, že aktualizovali na nejnovější verzi ImageMagicku na serveru, čehož jsem si v PHPinfu všiml, nicméně ani potom to nefachalo, tak to nejdříve odladili pro příkazovou řádku na serveru a potom řešili propojení s externíma knihovnama. To je vše co mi prozradili.
- Vyki
- Člen | 388
Tak chyba byla způsobena tím že si ImageMagick nerozumněl
s GhostScriptem. I ta vyjímka Postscript delegate failed
tomu
nasvědčovala. GhostScript přiložený v repozitáři u nejnovější verze
ImageMagick, bohuže s IM po instalaci nespolupracuje. Problém vyřešil tím,
že zkompiloval nejnovější verzi GS ze zdroje a dal ji na server.