Option de compression pdftk

J’utilise pdftk pour compresser un pdf en utilisant la ligne de commande suivante

pdftk file1.pdf output file2.pdf compress 

Cela fonctionne comme le poids de mon dossier a diminué.

Y a-t-il [options] pour changer la compression ???

Ou peut-être d’autres solutions pour compresser mon fichier? C’est lourd parce que certains graphiques ont beaucoup de points . Y a-t-il un moyen de convertir ces graphiques en jpg par exemple et d’adapter la compression?

J’ai eu le même problème et j’ai trouvé deux solutions différentes (voir ce fil de discussion pour plus de détails). Les deux ont considérablement réduit la taille de mon PDF non compressé.

  • Pixélisé (avec perte):

     convert input.pdf -compress Zip output.pdf 
  • Non pixelated (sans perte, mais peut afficher légèrement différemment):

     gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -dQUIET -sOutputFile=output.pdf input.pdf 

Edit : Je viens juste de découvrir une autre option (pour la compression sans perte), qui évite la mauvaise commande gs. qpdf est un outil pratique qui convertit les fichiers PDF (compression / décompression, chiffrement / déchiffrement) et est beaucoup plus rapide que la commande gs:

 qpdf --linearize input.pdf output.pdf 

cette procédure fonctionne assez bien

 pdf2ps large.pdf very_large.ps ps2pdf very_large.ps small.pdf 

Essaie.

Essayer de compresser un PDF que j’ai créé avec des tiffs de 400ppi, principalement 8-bit, quelques 24-bit, avec la compression PackBits, en utilisant tiff2pdf compressé avec Zip / Deflate. Un problème que je rencontrais avec chacune de ces méthodes: aucune des méthodes ci-dessus ne permettait de conserver la table des matières des favoris créée manuellement dans Acrobat Pro X. Même le paramétrage recommandé pour ebook pour gs . Bien sûr, je pouvais simplement ouvrir une copie de l’original avec la table des matières intacte et faire des Replace pages mais malheureusement, aucune de ces méthodes n’a fait un travail satisfaisant au départ. Soit ils ont réduit la taille à tel point que la qualité était inacceptablement pixellisée, soit ils n’ont pas réduit la taille du tout et, dans un cas, l’ont même augmentée malgré la perte de qualité.

pdftk compress :

 no change in size bookmarks TOC are gone 

gs screen :

 takes a ridiculously long time and 100% CPU errors: sfopen: gs_parse_file_name failed. ? | ./base/gsicc_manage.c:1651: gsicc_set_device_profile(): cannot find device profile 74.8MB-->10.2MB hideously pixellated bookmarks TOC are gone 

gs printer :

 takes a ridiculously long time and 100% CPU no errors 74.8MB-->66.1MB light blue background on pages 1-4 bookmarks TOC are gone 

gs ebook :

 errors: sfopen: gs_parse_file_name failed. ./base/gsicc_manage.c:1050: gsicc_open_search(): Could not find default_rgb.ic | ./base/gsicc_manage.c:1651: gsicc_set_device_profile(): cannot find device profile 74.8MB-->32.2MB badly pixellated bookmarks TOC are gone 

qpdf --linearize :

 very fast, a few seconds no size change bookmarks TOC are gone 

pdf2ps :

 took very long time output_pdf2ps.ps 74.8MB-->331.6MB 

ps2pdf :

 pretty fast 74.8MB-->79MB very slightly degraded with sl. bluish background bookmarks TOC are gone 

Si la taille du fichier est encore trop grande, cela pourrait aider à utiliser ps2pdf pour réduire la résolution du fichier pdf produit:

 pdf2ps input.pdf tmp.ps ps2pdf -dPDFSETTINGS=/screen -dDownsampleColorImages=true -dColorImageResolution=200 -dColorImageDownsampleType=/Bicubic tmp.ps output.pdf 

Ajustez la valeur de l’option -dColorImageResolution pour obtenir un résultat correspondant à vos besoins (la valeur décrit la résolution de l’image en DPI). Si votre fichier d’entrée est en niveaux de gris, le remplacement de Color through Gray ou l’utilisation des deux options dans la commande ci-dessus pourrait également vous aider. D’autres ajustements sont possibles en modifiant l’option -dPDFSETTINGS sur / default ou / printer . Pour des explications sur toutes les options possibles, consultez le manuel ps2pdf .

Après avoir essayé gpdf comme l’ a suggéré nullglob , j’ai trouvé que j’avais les mêmes résultats de compression (un fichier de ~ 900 Mo à environ 30 Mo) en utilisant simplement l’imprimante cups-pdf. Cela peut être plus facile / préféré si vous visualisez déjà un document et que vous avez seulement besoin de compresser un ou deux documents.

Dans Ubuntu 12.04, vous pouvez l’installer par

 sudo apt-get install cups-pdf 

Après l’installation, assurez-vous de vérifier dans Outils système > Administration > Impression > cliquez avec le bouton droit de la souris sur «PDF» et configurez-le sur «activer».

Par défaut, la sortie est enregistrée dans un dossier nommé PDF dans votre répertoire personnel.

Je n’ai pas vu beaucoup de réduction de la taille des fichiers en utilisant qpdf. La meilleure façon que j’ai trouvée est que, une fois que pdftk est terminé, utilisez ghostscript pour convertir pdf en postscript puis retour en pdf. En PHP, vous utiliseriez exec:

 $ps = $save_path.'/psfile.ps'; exec('ps2ps2 ' . $pdf . ' ' . $ps); unlink($pdf); exec('ps2pdf ' .$ps . ' ' . $pdf); unlink($ps); 

Je l’ai utilisé il y a quelques minutes pour obtenir une sortie pdftk de 490k à 71k.

pdf2ps large.pdf small.pdf suffit, au lieu de pdf2ps large.pdf small.pdf en deux étapes

 pdf2ps large.pdf very_large.ps ps2pdf very_large.ps small.pdf 

L’option pdf2ps à une ligne (de Lee) a en fait augmenté la taille du pdf. Cependant, les deux étapes ont été meilleures. Et il peut être combiné en un seul en utilisant la redirection de & vers l’entrée / sortie standard et les tubes:

pdf2ps large.pdf – | ps2pdf – small.pdf

a réduit un PDF généré par xsane de 18 Mo à 630 ko!

Les liens sont perdus, mais pour l’exemple actuel, ce n’est pas un problème … et c’était le moyen le plus simple d’obtenir le résultat souhaité.

Si vous souhaitez compresser un fichier PDF contenant beaucoup de texte, sous Windows, vous pouvez utiliser NicePDF Compressor – choisissez l’option “Flate”. Après avoir tout essayé (cpdf, pdftk, gs), cela m’a finalement aidé à compresser mes fichiers PDF de 1360 pages de 500 Mo à 10 Mo.

J’ai eu le même problème et j’ai utilisé cette fonction pour compresser des pages individuelles, ce qui a pour effet de compresser la taille du fichier jusqu’à 1/3 de la taille d’origine.

 for (int i = 1; i <= theDoc.PageCount; i++) { theDoc.PageNumber = i; theDoc.Flatten(); }