Alors merci mais je me suis mal exprimé, je voulais dire "Réduire le poids" (je vais voir si je peux éditer le titre).
Par ex j'ai un pdf de 11Mo, avec acrobat pro sur windows j'arrive à le réduire à 3,5Mo sans perte visible de qualité.
Je voudrais le faire en python et sur linux (donc à priori pas possible avec acrobat pro). Le but est de réduire automatiquement les nouveaux pdf qui sont ajoutés à une base de donnée (qui en contient déjà plus de 5000).
- Edité par thelinekioubeur 31 juillet 2019 à 12:31:46
Ce message PyPDF2 compression formule le même problème avec une réponse assez incertaine.
Perso, sous Linux, j'appelerais (via Python éventuellement) un utilitaire comme ps2pdf qui de toute façon va lui même appeler ghostscript. Voici les commandes que j'ai déjà utilisées :
J'ai testé ghostscript c'est ce que j'ai de mieux pour le moment : je lance la commande avec gs, je vérifie qu'il n'y a rien dans stderr car parfois le fichier de sortie est pété, puis je vérifie que le fichier de sortie est plus léger que celui d'entrée.
Car par exemple avec le fichier de 11Mo dont j'ai parlé, le fichier de sortie est plus gros. Y compris avec /screen.
Ça marche mieux pour d'autres fichiers, mais bon ce n'est clairement pas du même niveau de acrobat pro.
Ce serait pas mieux de zip/compress si le but derrière c'est de le stocker dans la base? C'est comme ça que je fais, ça permet de réduire de 80/90% la taille du fichier sans perdre la qualité.
Après derrière il faut forcément dezip dans les différents projets qui utilisent le pdf, mais niveau économie d'espace on fait difficilement mieux.
Sinon il y a de la normalisation mais derrière on a forcément une perte de qualité.
Si je zip ce fichier ça passe de 11 à 10Mo. Ce que je veux c'est réduire le poids, avec perte sur les images.
Par ex ya des mecs qui mettent dans leur CV leur photo en ultraHD, mais en tout petit. Ça fait un gros pdf pour rien, et zipper ça ne change presque rien.
Ce n'est qu'un exemple.
En plus les pdf sont déjà compressés, puisque la VM est sur un ZFS avec compression lz4.
- Edité par thelinekioubeur 31 juillet 2019 à 15:55:22
@WorstDevEver : Il s'agit d'une base de donnée Odoo, ça fonctionne avec un filestore : les pdf commes tous les fichiers sont renommés avec un uuid et stockés tels quels dans un dossier. Puis dans la base de donnée elle même il y a une table ir_attachment qui référence tout ça.
Au niveau de l'ORM ça se gère en base64, mais les fichiers sont réellement stockés tels quel, j'ai pu vérifier en allant en copier un manuellement et en le renommant en test.pdf .
Ha d'accord, je ne connais pas du tout Odoo donc je sais pas si on peut faire les même chose que sur MySql.
Dans une Bdd "classique" (si cela veut dire quelque chose), on peut stocker sous un format blob. Du coup nous on met le pdf dans un zip et on enregistre ce zip sous forme de blob. Ca permet de passer de 11MO à 1MO en base.
Euh ouais mais ça ne change rien au problème. Passer de 11 à 1 Mo ça va beaucoup dépendre du fichier. Essaye avec un fichier docx de 11Mo par ex tu ne va rien gagner du coup (puisqu'un docx est déjà compressé en zip).
Encore une fois, ce n'est pas ce type de compression que je cherche.
@Dan737 : ilovepdf a l'air pas mal, j'ai des résultats meilleurs qu'avec ghostscript.
Ça reste moins bien que le résultat d'acrobat pro. Et puis c'est payant à plus de 250 fichiers / mois (on en a eu 480 rien qu'au mois de juillet...)
edit : par contre la lib python est buguée (à priori elle ne fonctionne que sur windows)
Dommage en effet. J'avais trouvé cet article sur SO : https://stackoverflow.com/questions/2693820/extract-images-from-pdf-without-resampling-in-python Mais il s'agit de faire le boulot toi-même... Pas sûr que tu veuilles te prendre cette peine. Il semblerait que les images sont juste insérées dans le PDF tel quel. Ainsi il devrait être possible de les extraire, les re-dimensionner avec PIL et les ré-insérer dans le PDF. Mais le format PDF est vraiment très compliqué et il se pourrait qu'il y ait pas mal de cas particuliers. Ca semble être un projet conséquent... :/
Ce genre de chose est très facile à faire avec des fichiers docx ou xlsx, en PDF c'est certainement plus compliqué oui.
Réduire le poids d'un fichier PDF
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Try->Fail->Learn->Converge to success :
Découverte Python Doc Tkinter Les chaînes de caractères
Try->Fail->Learn->Converge to success :
Try->Fail->Learn->Converge to success :
Try->Fail->Learn->Converge to success :