Partage
  • Partager sur Facebook
  • Partager sur Twitter

Réduire le poids d'un fichier PDF

    31 juillet 2019 à 11:16:47

    Est-ce que quelqu'un connaît une solution miracle pour réduire la taille le poids d'un fichier PDF ?

    Les solutions que je trouve sur google ne me satisfont pas.

    -
    Edité par thelinekioubeur 31 juillet 2019 à 12:33:21

    • Partager sur Facebook
    • Partager sur Twitter
      31 juillet 2019 à 12:02:51

      Tu peux utiliser la lib PyPDF2, avec la fonction "scale(x,y)".

      Comme je suis gentil je t'ai même écrit un bout de code :

      from PyPDF2 import PdfFileReader
      
      def pdf_resize_page(path, pageIndex):
          with open(path, 'rb') as f:
              pdf = PdfFileReader(f)
              page = pdf.getPage(pageIndex)
              page.scale(0.5, 0.5)
              print(page)
      
      pdf_resize_page("LENTEUR_ANALYSE.pdf", 0)



      • Partager sur Facebook
      • Partager sur Twitter

      Try->Fail->Learn->Converge to success :{\displaystyle Q[s,a]:=(1-\alpha )Q[s,a]+\alpha (r+\gamma ~max_{a'}Q[s',a'])}

        31 juillet 2019 à 12:31:29

        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

        • Partager sur Facebook
        • Partager sur Twitter
          31 juillet 2019 à 12:58:39

          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 :

          ps2pdf -dPDFSETTINGS=/ebook input.pdf output.pdf 
          
          gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -dNOPAUSE -dQUIET -dBATCH -sOutputFile="fic_sortie.pdf" "fic_entree.pdf"



          • Partager sur Facebook
          • Partager sur Twitter
            31 juillet 2019 à 13:47:14

            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.

            • Partager sur Facebook
            • Partager sur Twitter
              31 juillet 2019 à 14:23:05

              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é. 

              • Partager sur Facebook
              • Partager sur Twitter

              Try->Fail->Learn->Converge to success :{\displaystyle Q[s,a]:=(1-\alpha )Q[s,a]+\alpha (r+\gamma ~max_{a'}Q[s',a'])}

                31 juillet 2019 à 15:29:07

                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

                • Partager sur Facebook
                • Partager sur Twitter
                  31 juillet 2019 à 16:49:49

                  Sous quel format enregistres-tu tes fichier pdf dans ta base ?

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Try->Fail->Learn->Converge to success :{\displaystyle Q[s,a]:=(1-\alpha )Q[s,a]+\alpha (r+\gamma ~max_{a'}Q[s',a'])}

                    31 juillet 2019 à 17:00:47

                    Je me doute que c'est loin d'être optimal, mais as-tu regardé du côté de https://www.ilovepdf.com/ ? Il existe un API https://github.com/AndyCyberSec/pylovepdf. Mais je ne sais pas si c'est toujours gratuit...

                    • Partager sur Facebook
                    • Partager sur Twitter
                      31 juillet 2019 à 19:56:00

                      @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 .

                      @Dan737 : merci ! Je regarderais ça demain

                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 août 2019 à 8:53:07

                        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.

                        Du coup désolé de pas vraiment pouvoir t'aider ^^  

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Try->Fail->Learn->Converge to success :{\displaystyle Q[s,a]:=(1-\alpha )Q[s,a]+\alpha (r+\gamma ~max_{a'}Q[s',a'])}

                          1 août 2019 à 9:39:04

                          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)

                          -
                          Edité par thelinekioubeur 1 août 2019 à 9:50:07

                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 août 2019 à 9:44:01

                            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... :/

                            -
                            Edité par Dan737 1 août 2019 à 9:44:49

                            • Partager sur Facebook
                            • Partager sur Twitter
                              1 août 2019 à 11:02:47

                              Ce genre de chose est très facile à faire avec des fichiers docx ou xlsx, en PDF c'est certainement plus compliqué oui.

                              • Partager sur Facebook
                              • Partager sur Twitter

                              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.
                              • Editeur
                              • Markdown