# Conversion pdf vers jpeg



## damien_t (1 Juin 2006)

Bonjour, 
J'ai un problème sur lequel j'ai passé la journée sans trouver de solution satisfaisante
Je fais du dev web. Des fichiers PDF provenant d'un fax arrivent régulièrement sur le serveur. Ce sont des pdfs de type image qui doivent être lus à l'écran avec des détails assez minuscules, par exemple une date peut faire 10 pixels de haut. Ces PDFs doivent être traités, convertis en JPEG et affichés (en version zoomée et / ou rotationnés) Jusque là, aucun problème.
J'utilise Rails et RMagick (version Ruby d'ImageMagick). Après des heures passées dessus, j'ai bien compris qu'ImageMagick rasterise via Ghostscript le PDF pour ensuite le traiter. Il n'y a aucun autre moyen avec ImageMagick. Toujours aucun problème.
La commande pour convertir un pdf vers un jpeg sans avoir de gros pixels est 

```
convert -density 288 -resize 25% fichierentree.pdf fichiersortie.jpg
```
La encore, tout fonctionne. J'ai bien mes fichiers jpeg en sortie, à raison d'un fichier jpeg par page de pdf. Ils sont très lisibles.
Le problème est que cela met trois plombes sur mon iBook pour effectuer la conversion. Genre 5 minutes à 100% du CPU pour un PDF de 11 pages. Pendant ce temps, mon mac ne reponds plus, le disque dur gratte beaucoup et j'ai la roue colorée de la mort. J'ai essayé de faire varier les filtres pour le resize, le temps reste très long.
J'ai essayé la même opération avec Aperçu, en essayant de sauver mon pdf en jpeg.  Cela fonctionne, la conversion est quasi instantanée. Je veux bien que Aperçu ne me convertisse que la page en cours et que le jpeg soit beaucoup moins agréable que celui produit par ImageMagick mais tout de même. Y'a un truc que je pige pas. Et mes recherches n'ont rien donné.

Ma question est donc : Y'a-t-il un moyen de faire rapidement une conversion en ligne de commande d'un PDF vers un ensemble d'images ? Ma solution actuelle marche mais le serveur doit recevoir des PDFs en permanence. Je ne peux pas me permettre de mettre plus d'une à deux secondes par page. Le serveur sera a priori un linux dédié mais je voudrais aussi pouvoir tester sur mon mac.

Merci d'avance.


----------



## bompi (1 Juin 2006)

Tu peux déjà essayer de faire la conversion directement avec GhostScript, histoire de voir si c'est cela qui prend du temps. Si c'est le cas, vérifier alors l'installation de GS.


----------



## damien_t (1 Juin 2006)

Une douche plus tard, et quelques essais en plus, je me réponds. ImageMagick (ou RMagick) a un gros problème. En passant directement par ghostscript, cela fonctionne dans des temps normaux (une dizaine de secondes pour une dizaine de pages). 
Ma ligne de commande est 





> gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pnggray -r300 -sOutputFile=test_%03d.png FICHIERFAX.pdf


Les fichiers de sortie sont pas géniaux, mais je ne perds pas de détails. Et finalement, cela sera du PNG. Un jpeg pèse 400Ko pour 100Ko en PNG, là encore nystère sur le pourquoi du comment.


----------



## damien_t (1 Juin 2006)

bompi a dit:
			
		

> Tu peux déjà essayer de faire la conversion directement avec GhostScript, histoire de voir si c'est cela qui prend du temps. Si c'est le cas, vérifier alors l'installation de GS.


vi merci ! (voir message suivant, nos messages se sont croisés)


----------



## bompi (1 Juin 2006)

Cool.


----------



## Yoc (27 Juin 2006)

J'essaye de faire un peu la m&#234;me chose. Je vous explique :
j'ai des fichiers PDF que j'aimerais consulter en web mais page par page, et sans passer par le plugin acrobat. J'ai donc pens&#233; convertir les pages du PDF en JPG et utiliser un g&#233;n&#233;rateur de galerie en html pou rpr&#233;senter le tout.
Seul probl&#232;me, pour la conversion j'utilise PDF2PSP mais les r&#233;glages ne me conviennent pas. Soit l'image est pix&#233;lis&#233;e, soit elle est trop large par rapport &#224; l'&#233;cran et je suis oblig&#233; de scroller verticalement.
J'ai donc essayer ta m&#233;thode damien_t avec ghostScript (que j'ai compil&#233; et install&#233 mais c'est le m&#234;me probl&#232;me. Si je r&#232;gle le param&#232;tre -r pour que l'image fasse la largeur de l'&#233;cran (600, mon &#233;cran est en portrait) c'est pix&#233;lis&#233;. Pourtant j'ai pas l'impression d'&#234;tre au max de la r&#233;solution de l'&#233;cran... 
Avez-vous une id&#233;e pour soit 
1. r&#233;gler ghostscript correctement pour g&#233;n&#233;rer des jpg/png de 600 pixels de large qui soient lisibles &#224; l'&#233;cran
2. convertir des pdf en html avec un logiciel d&#233;j&#224; existant...


----------



## damien_t (28 Juin 2006)

Yoc a dit:
			
		

> Si je règle le paramètre -r pour que l'image fasse la largeur de l'écran (600, mon écran est en portrait) c'est pixélisé. Pourtant j'ai pas l'impression d'être au max de la résolution de l'écran...


 Jusqu'on soit bien sûr: -r donne la résolution (en point par pouce). Sur Mac, le nombre magique est 96 si mes souvenirs sont bons, et 72 sous Windows. J'ai refait la conversion sur mon fichier de test, avec -r96, le résultat est pas génial, mais je crois pas qu'on puisse faire mieux, sans interpolation en tout cas.

Ou alors, il faut passer par ImageMagick (ou GraphicMagick), qui dans ce cas te fera une jolie interpolation . Dans ce cas, tu risques peut-être de te retrouver avec les mêmes problèmes que moi. Je l'ai compris après mon dernier messages, mais il est normal que le temps de conversion soit très lent. Un page A4 avec une résolution de 300, fait quelque chose comme 2500*3500px, pixels qu'il faut interpolés (c'est cette opération qui est très lente) pour ensuite la downsampler en quelque chose comme 600*1200.



> Avez-vous une idée pour soit
> 1. régler ghostscript correctement pour générer des jpg/png de 600 pixels de large qui soient lisibles à l'écran


 essaye avec -r96 (sur un fichier A4, la largeur en d'environ 700px). ou sinon convert de ImageMagick. La ligne de commande de mon premier message fait exactement ce que tu souhaites (mais à quel prix !). 


> 2. convertir des pdf en html avec un logiciel déjà existant...


 http://pdftohtml.sourceforge.net/ ? (aucune idée de ce que cela vaut, et pas sûr que cela fonctionne sur mac)


----------



## GOOZ67 (26 Juillet 2006)

bonjour,

comment fait on pour avoir un png en couleur ? -sDEVICE=png..... 
je n'arrive pas a voir les option de GS_DEVICE

peut -on egalment reduire le fichier a 150px X 150px  par exemple dans la foulé


----------

