En utilisant ImageMagick ou Ghostscript (ou quelque chose) à l'échelle PDF pour adapter la page?
-
23-08-2019 - |
Question
J'ai dénigrement ma tête contre ce en vain.
Je dois réduire certains grands fichiers PDF à imprimer sur une page 8.5x11 pouces (lettre standard). Peut-ImageMagick / Ghostscript gérer ce genre de chose, ou suis-je tant de mal parce que je utilise le mauvais outil pour le travail?
Il suffit de compter sur l'option « rétrécir à la page » dans les boîtes de dialogue d'impression côté client est pas une option, nous aimerions que ce soit facile à utiliser pour les utilisateurs finaux.
La solution
Le problème avec l'utilisation ImageMagick est que vous convertissez à un format d'image raster, l'augmentation de la taille du fichier et diminution de la qualité pour tous les éléments vectoriels sur vos pages.
multivalent conservera les informations vectorielles du PDF. Essayez:
java -cp Multivalent.jar tool.pdf.Impose -dim 1x1 -paper "8.5x11in" myFile.pdf
pour créer un fichier de sortie myFile-up.pdf
Autres conseils
Je ne voudrais pas utiliser convert
. Il utilise Ghostscript en arrière-plan, mais il est beaucoup plus lent. J'utilise Ghostscript directement, car il me donne un contrôle beaucoup plus direct (et un certain contrôle sur les paramètres qui sont beaucoup plus difficiles à réaliser avec convert
). Et pour convertir à travailler pour la conversion PDF-to-PDF que vous aurez installé Ghostscript de toute façon:
gs \
-o /path/to/resized.pdf \
-sDEVICE=pdfwrite \
-dPDFFitPage \
-r300x300 \
-g2550x3300 \
/path/to/original.pdf
Le mogrify de ImageMagick / convertir les commandes vont en effet faire le travail. Stephen page avait à peu près la bonne idée, mais vous avez besoin de régler le dpi du fichier ainsi, ou vous ne serez pas le travail.
En supposant que vous avez un fichier qui est de 300 dpi et déjà le même rapport d'aspect que 8,5 x 11 la commande serait:
// 300dpi x 8.5 -2550, 300dpi x 11 -3300
convert original.pdf -density "300" -resize "2550x3300" resized.pdf
Si le rapport d'aspect est différent, alors vous devez faire un recadrage légèrement plus délicat.
L'approche Ghostscript a bien fonctionné pour moi. (Je me suis déplacé mon dossier de mon PC sous Windows à un ordinateur Linux et il a couru là-bas.) J'ai fait un petit changement à la commande Ghostscript car la commande redimensionne Ghostscript ci-dessus remplit complètement 8,5 par page 11 pouces. Mon imprimante ne peut pas imprimer sur le bord, bien que, si plusieurs milllimeters le long de chaque bord de la page ont été perdus. Pour remédier à ce problème, j'escaladé mon document PDF à 0,92 d'un plein 8.5 de 11 pouces. De cette façon, j'ai vu tout centré sur la page et avait une légère marge. Parce que 0,92 * (2550x3300) = (2346x3036), je courais la commande Ghostscript suivante:
gs -sDEVICE=pdfwrite \
-dPDFFitPage \
-r300x300 \
-g2346x3036 \
/home/user/path/original.pdf \
-o /home/user/path/resized.pdf