web-dev-qa-db-fra.com

Lot redimensionner et compresser PDF fichiers

J'ai besoin d'un moyen de former et de compresser des lots de PDF fichiers. Je préférerais faire cela sous Windows, mais Linux irait bien s'il s'agissait d'un flux de travail plus lisse.

Je sais qu'il y a des programmes tels que Nitropdf et Acrobat qui vous permettent d'accomplir cela, mais je crains que cela ne soit à faire sur une base de fichiers par fichier. Ces programmes ne sont pas non plus chers et je préférerais ne pas les acheter pour que je puisse utiliser une ou deux fonctionnalités.

Info de fond: J'utilise CamCanner pour numériser les reçus et les factures d'entrée dans les comptes (FreeAgent). CamCanner PDFS Les PDF sont toutes de la taille d'A4 et des multifores dépassent souvent la limite de fixation de 2 Mo.

15
Stan

Je suggère un outil de ligne de commande ici, qui peut être facilement associé à des boucles dans des langages de script intégrés dans Windows, Linux, OS X, etc.


ImageMagick prend en charge les pdfs et a une option resize avec son outil convertir . Je ne l'ai jamais utilisé personnellement, mais vous pouvez essayer de jouer avec cela.

Vous pouvez également utiliser l'option --- compress (il y a un exemple ici ):

Faites pivoter un PDF

$ convert -rotate 270 -density 300x300 -compress lzw in.pdf out.pdf

Cela suppose un PDF soutenu TIFF. Le paramètre de densité est important car, sinon ImageMagick, échantillonne l'image (pour une raison quelconque). L'addition de l'option de compression aide à garder la taille globale du PDF plus petit, sans perte de qualité.

Pour les PDF multipages, vous pouvez utiliser pdftk , puis utiliser mogrify de ImageMagick pour convertir chaque page en place:

$ pdftk in.pdf burst
$ mogrify -rotate 270 -density 300x300 -compress lzw pg_*.pdf
$ pdftk pg*.pdf cat output out.pdf
$ rm pg*.pdf

Pour convertir des fichiers PDF avec ImageMagick, vous devez avoir Ghostscript installé.


Imagemagick peut convertir des PDF multipages. Tandis que mogrify va convertir en place, je vous recommande d'utiliser convert afin que vous puissiez garder les originaux en cas d'accident.


J'ai fait des tests sur votre exemple PDF fourni. Cela a très bien fonctionné pour moi:

convert -density 200 -compress jpeg -quality 20 test.pdf test2.pdf

Densité par défaut sur 72 DPI. En la définissant plus haut, nous pouvons obtenir une résolution plus élevée et donc une qualité acceptable. Il avait l'air bien à 150, Et était un peu plus petit, mais si vous souhaitez répondre à une gamme de PDFS 200 Devrait fonctionner.

La compression JPEG devrait soit choisir un niveau de niveau ou par défaut sur 92 Sur une échelle de 1 Sur 100 Avec 100 Être le meilleur. Le réglage à 20, Il ressemble presque aussi bien que l'original (un peu plus flou et le petit texte au fond est un peu difficile à lire, mais c'était à l'origine de toute façon).

Ces options apportent votre 1,7 Mo Échantillon dès 0.5MB, tout en le gardant lisible. Vous pouvez expérimenter un peu.

Si vous voulez une taille plus petite (à la fois du fichier et de l'image/pdf), vous pouvez utiliser -resize #%, Par exemple. -resize 75%. Sur votre exemple PDF, cela rend la petite impression au bas assez malheureuse, cependant.

Si vous êtes toujours serré pour l'espace, en particulier pour les PDF MultiPage, vous pouvez compresser davantage en ajoutant les fichiers à une archive zip (ou autre). Cela a apporté la taille du fichier à 0,43 Mo sur ce test PDF (réduction de la qualité de compression JPEG a un effet beaucoup plus drastique). Vous pouvez également diviser le fichier PDF en pages avec pdftk , comme @ glallen suggéré dans son édition ou diviser l'archive et recombiner à l'autre extrémité.

2 Mo est également une limite d'attachement assez faible, vous voudrez peut-être examiner d'autres fournisseurs de messagerie. De la mémoire, Gmail fournit plus de 10 Mo par courrier électronique.

Ces options, et plus, sont entièrement documentées sur leur site Web .

15
Bob