IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Compress Pdf ou Image


Sujet :

Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 571
    Points : 97
    Points
    97
    Par défaut Compress Pdf ou Image
    Bonjour,

    Voici ma situation.
    J'ai 50 images (10cmx17cm, en 300 dpi, en CMJN et un poids d'environ 2,5Mo chacune)
    J'utilise 'reportlab' pour créer un fichier Pdf et assembler ces images dans un format A4 (je ne rajoute rien d'autres)

    Je me retrouve donc avec un fichier pdf d'environ 170Mo
    Ce qui fait beaucoup et pas pratique pour échanger ce petit livret avec les autres parents (c'est un petit livret pour enfant)

    Je cherche donc des solutions pour réduire ce pdf sans perdre en qualité puisque la finalité est que les parents de la classe puissent les imprimer chez eux (ou au bureau ;-))

    J'ai fouillé sur le web (ghostscript ...) mais pas vraiment de solution utilisable en python (natif ou non)

    Est ce que quelqu'un a déja eut cela a gérer ? Que me conseillez vous ?
    Reduction des images puis construction du pdf - Avec quel outil pour combiner qualité et taille de l'image
    Reduction uniquement du pdf ? Idem quel est votre outil préféré ?

    Merci pour votre aide

    Thais

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Bonjour,

    il existe un outil sous Linux s'appelant PDFMM (pour PDF Moins Moins) qui permet de réduire assez considérablement le poids de fichiers PDF sans pour autant mettre à mal le contenu.

    https://github.com/jpfleury/pdfmm

    Ceci dit, avec autant d'images, faut pas espérer de miracles.

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour

    La gestion des couleurs "CMJN" est adaptée à l'impression, mais peut-être utilisée avec plusieurs formats de fichier. Quel format de fichier est-il utilisé ici?

    Si c'est du JPG, les images sont déjà compressées, et on ne pourra pas gagner grand-chose en utilisant un compresseur pour le pdf.

    Mais si c'est du TIFF, il faut essayer de le comprimer, ou de le convertir en jpg, quitte à en limiter la compression pour garder une bonne qualité. Voir si l'imprimeur a des exigences sur ce point. Voir si le changement de format peut être fait en Python avec l'excellent "pillow" (fork de PIL): https://pillow.readthedocs.io/en/lat....Image.convert. Si on peut faire ça avec pillow, il sera facile de faire un petit programme Python pour faire la conversion de tous les fichiers en même temps (avant l'intégration dans le pdf!). Il est possible aussi qu'il y ait des modules externes spécialisées dans pypi (https://pypi.org/) pour faire ça.

    Si le format des fichiers images doit rester en TIFF non compressé, on peut essayer de comprimer le pdf avec le module Python "zipfile" pour faciliter sa diffusion. Le destinataire devra décompresser pour obtenir le pdf, mais la décompression est compatible avec les programmes courants (7-zip par exemple). Il y a peut-être une possibilité de livrer le pdf en version "auto-décompression"? Mais attention à ne pas diffuser de virus en diffusant un exécutable ".exe" sous Windows.

    Par contre, je ne sais pas si reportlab contient des possibilités de compression du pdf lui-même.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par thais781 Voir le message
    J'utilise 'reportlab' pour créer un fichier Pdf et assembler ces images dans un format A4 (je ne rajoute rien d'autres)
    Je viens de faire un essai. Aved 48 images pour un poids de 217Mo, le reportlab me génère un fichier de 344Mo.
    Mais avec PDFCreator le résultat pèse 23Mo.
    Donc ça vient fatalement de reportlab qu'il faudrait décortiquer voir comment et si on peut spécifier des paramétrages de compression qui existent ailleurs et qui doivent donc exister ici aussi

    Citation Envoyé par thais781 Voir le message
    Reduction des images puis construction du pdf - Avec quel outil pour combiner qualité et taille de l'image
    Reduction uniquement du pdf ? Idem quel est votre outil préféré ?
    PDFCreator. Ok il a une sale réputation de tromperie et de "logiciel libre pas tout à fait libre" mais en tout cas les PDF qu'il génère sont petits et de bonnes qualités. Mais même sans parler de lui, tout logiciel déjà prévu pour générer du PDF (et il y en a plein) sera toujours mieux que de tenter péniblement de réinventer la roue. J'aime beaucoup Python mais pas au point de vouloir l'utiliser pour lui faire faire des trucs que d'autres font déjà très bien.

    Accessoirement il y a le logiciel "mogrify" (sous Linux) qui peut retailler des images. On lui donne la taille soit en pixels, soit en proportion (style "50%") et la liste des images et il avale le tout sans broncher (se trouve dans le paquet "imagemagick")

    Citation Envoyé par Arioch Voir le message
    il existe un outil sous Linux s'appelant PDFMM (pour PDF Moins Moins) qui permet de réduire assez considérablement le poids de fichiers PDF sans pour autant mettre à mal le contenu.

    Ceci dit, avec autant d'images, faut pas espérer de miracles.
    Je viens d'aller le voir. C'est juste un script bash qui encapsule la commande "gs" dans zenity. Et effectivement il ne m'a pas fait de miracles sur mes PDF.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Je gère un programme qui génère du PDF avec plein de thumbnails dedans.

    Je préfère utiliser le combo python-docx et docx2pdf.

    Avec le premier, je gère facilement la mise en page, la dimension des images pour produire un fichier Word et le second me convertit le .docx en pdf vraiment pas lourd pour ce qu'il contient.

    Je m'en sers pour gérer ma collection de livres sous le logiciel Calibre.

    Je viens de faire l'essai sur un fichier Word généré pesant 198 Mo. Pour le fichier converti en PDF :

    - 1197 livres (et tout autant de couvertures de livres)
    - 573 pages
    - 26,6 Mo pour le poids du PDF

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 571
    Points : 97
    Points
    97
    Par défaut
    Bonjour,

    Genial, merci pour votre aide :-)
    Quelques retours/reponses

    @Arioch :
    - Ok merci, mais si ca ne fait pas de miracle, je risque de retrouver effectivement mes essai avec ghostscript

    @tyrtamos :
    - Mes fichiers sont du Jpeg donc déja compressé :-(
    - Je ne connais pas ce principe de fichier zipper 'auto-deconpressable', est ce qu c'est cross-plateforme (Windows, mac ...) ?

    @Sve@r :
    - Dans les essais que tu as fais pour utiliser PDF Creator, tu es passé par Word ?

    @ Arioch :
    - Sympa ce combo, j'avais testé mais peut etre pas suffisament en profondeur
    - Peut être que tu as une soluce pour les pbs que j'avais rencontré :
    - Le livret doit être imprimé en recto/verso puis découpé
    - Donc il faut que je positionne les images au mm pour qu'elles soient bien en face l'une de l'autre lors de l'impression
    - Il faut que je rajoute des trais de coup (en gros des petites lignes sur chaque page)
    - Je n'ai pas trouvé l'option positionnement de l'image 'au dessus du texte' proposé par word ni l'ajout de ligne par dessus tout cela (et avec un positionnement précis sur la page)
    - Une idée ?
    - Est ce que via Word, le CMJN est bien maintenu ?

    Encore merci pour votre aide.
    Effectivement, si on peut passer de 300Mo à 25Mo, ce serait génial ;-))))

    Thais

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par thais781 Voir le message
    - Ok merci, mais si ca ne fait pas de miracle, je risque de retrouver effectivement mes essai avec ghostscript
    Surtout que pdfmm c'est en fait du ghostscript encapsulé dans une IHM zenity.

    Citation Envoyé par thais781 Voir le message
    - Je ne connais pas ce principe de fichier zipper 'auto-deconpressable', est ce qu c'est cross-plateforme (Windows, mac ...) ?
    Quand tu utilises winzip/winrar tu peux dire à l'outil de créer un auto-decompressible. Le zip généré embarque un mini-executable avec lui ce qui permet au client de le décompresser sans avoir à installer winzip/winrar. Mais
    • l'exécutable est forcément adapté à l'OS du créateur (donc le client doit avoir le même OS)
    • un client qui reçoit un exe "inconnu" n'est pas forcément chaud pour l'exécuter (en tout cas moi j'exécute pas ou alors dans une machine virtuelle qui a un disque immuable)
    • il existe des outils gratuits style 7-zip donc en général le client a toujours un logiciel apte à décompresser un zip classique (et là c'est multiplateforme vu que toutes les plateformes ont un outil équivalent)


    Citation Envoyé par thais781 Voir le message
    - Dans les essais que tu as fais pour utiliser PDF Creator, tu es passé par Word ?
    Non (tu n'avais pas parlé de word, juste d'images). Donc j'ai placé mes 48 images dans un dossier, j'ai fait "ctrl-a" puis un clic droit sur la première et choisi "imprimer". Windows a pris la main, les a placées en file d'attente et m'a demandé "sur quelle imprimante". J'ai choisi PdfCreator (une imprimante virtuelle qui génère du pdf) et roule.
    Mais effectivement quand j'imprime en pdf du word qui contient de l'image là ce n'est plus du tout pareil.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Citation Envoyé par thais781 Voir le message
    @ Arioch :
    - Sympa ce combo, j'avais testé mais peut etre pas suffisament en profondeur
    - Peut être que tu as une soluce pour les pbs que j'avais rencontré :
    - Le livret doit être imprimé en recto/verso puis découpé
    - Donc il faut que je positionne les images au mm pour qu'elles soient bien en face l'une de l'autre lors de l'impression
    - Il faut que je rajoute des trais de coup (en gros des petites lignes sur chaque page)
    - Je n'ai pas trouvé l'option positionnement de l'image 'au dessus du texte' proposé par word ni l'ajout de ligne par dessus tout cela (et avec un positionnement précis sur la page)
    - Une idée ?
    - Est ce que via Word, le CMJN est bien maintenu ?
    Pour info, je précise les urls pypi des deux librairies dont je parlais plus haut : python-docx et docx2pdf. Vu qu'il existe plusieurs libs sur Python et docx... Autant que je donne les bonnes que j'ai utilisées.

    Pour les traits de coupe, j'ignore si tu pourras les faire mais tu peux définir toi même les marges et ajouter du texte. A essayer avec des underlines.

    Positionner les images, je me contente de les placer à chaque fois tout à gauche mais je définis leur taille. Pas essayé de les positionner à un autre endroit (au centre par exemple). A voir ce que dis la doc de python-docx à ce sujet.

    Pour l'histoire du positionnement de l'image au-dessus du texte, aucune idée.

    Quant aux couleurs, vu qu'on peut soit-même définir ce que l'on veut via les standards HTML pour les couleurs, tu peux respecter le CMJN.

    Bref, épluche le readme de python-docx pour voir si tu as tout ce dont tu aurais besoin.

Discussions similaires

  1. règler la compression d'une image
    Par killaon dans le forum Langage
    Réponses: 1
    Dernier message: 30/08/2006, 21h08
  2. Enregistrer un fichier pdf en image
    Par PrinceMaster77 dans le forum ASP
    Réponses: 1
    Dernier message: 13/05/2006, 00h16
  3. Aperçu d'un PDF en image
    Par bractar dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 05/05/2006, 14h41
  4. [FPDF] pdf avec image
    Par wildbackk dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 12/04/2006, 18h01
  5. [Graphique] Convertir pdf en image
    Par anykeyh dans le forum Graphisme
    Réponses: 5
    Dernier message: 18/01/2006, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo