web-dev-qa-db-fra.com

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 lorsque le poids de mon dossier a diminué.

Y at-il [options] pour changer la compression ???

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

83
RockScience

J'ai eu le même problème et j'ai trouvé deux solutions différentes (voir this thread 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
    
  • Unpixelated (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 de découvrir une autre option (pour la compression sans perte), qui évite la mauvaise commande gs. qpdf est un outil simple qui convertit les PDF (compression/décompression, cryptage/décryptage). Il est beaucoup plus rapide que la commande gs:

qpdf --linearize input.pdf output.pdf
112
nullglob

cette procédure fonctionne assez bien

pdf2ps large.pdf very_large.ps

ps2pdf very_large.ps small.pdf

essaie.

33
jortizromo

Essayer de compresser un PDF) que j’ai réalisé avec des tiffs de 400ppi, la plupart du temps en 8 bits, quelques-uns en 24 bits, avec la compression PackBits, en utilisant tiff2pdf compressé avec Zip/Deflate. Un problème que j'ai rencontré avec chacune de ces méthodes: aucune des méthodes ci-dessus n'a conservé la table des matières des signets que j'ai créée manuellement avec soin dans Acrobat Pro X. Même le paramètre recommandé ebook pour gs. Bien sûr, je pourrais simplement ouvrir une copie de l’original avec la TOC intacte et faire un Replace pages mais malheureusement, aucune de ces méthodes n’a été satisfaisante au départ. Soit ils réduisaient tellement la taille que la qualité était pixellisée de manière inacceptable, soit ils ne la réduisaient pas du tout et, dans un cas, l’augmentaient même malgré une 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
21
hmj6jmh

Si la taille du fichier est encore trop importante, l'utilisation de ps2pdf pourrait aider à réduire la résolution du fichier pdf généré:

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 qui correspond à 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, remplacez Couleur par gris ou utilisez les deux options de la commande ci-dessus pourraient également aider. Il est possible d'effectuer d'autres ajustements en modifiant l'option - dPDFSETTINGS en /default ou /imprimante . Pour des explications sur toutes les options possibles, consultez le manuel ps2pdf .

16
Dominik

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

Dans Ubuntu 12.04, vous pouvez l’installer en

Sudo apt-get install cups-pdf

Après l’installation, assurez-vous d’enregistrer Outils système > Administration > Impression > cliquez avec le bouton droit de la souris sur "PDF" et réglez-le sur "activer".

Par défaut, la sortie est enregistrée dans un dossier nommé [~ # ~] pdf [~ # ~] dans votre répertoire personnel.

3
ryanjdillon

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

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

Toutefois, ps2pdf large.pdf small.pdf est un meilleur choix.

  • ps2pdf est beaucoup plus rapide
  • sans paramètres supplémentaires spécifiés, pdf2ps produit parfois un fichier plus volumineux.
2
Lee

L'option pdf2ps sur une ligne (de Lee) a en fait augmenté la taille du pdf. Cependant, les deux étapes on fait mieux. Et il peut être combiné en un seul en utilisant la redirection de & vers des entrées/sorties et des tubes standard:

pdf2ps large.pdf - | ps2pdf - small.pdf

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

Les liens sont perdus, mais pour l'exemple actuel, ce n'est pas une préoccupation ... et était le moyen le plus simple d'atteindre le résultat souhaité.

2
E. Curis

Je n'ai pas constaté beaucoup de réduction de la taille du fichier avec qpdf. La meilleure façon que j'ai trouvée est, une fois que pdftk est terminé, d'utiliser ghostscript pour convertir un fichier PDF en fichier PostScript, puis de nouveau en fichier PDF. Dans 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 prendre la sortie pdftk de 490k à 71k.

1
Tom