Je voudrais transformer un pdf avec du texte et des images en couleur en un autre pdf avec seulement du noir et blanc, afin de réduire ses dimensions. De plus, je voudrais garder le texte en tant que texte, sans transformer les éléments des pages en images. J'ai essayé la commande suivante:
convert -density 150 -threshold 50% input.pdf output.pdf
trouvé dans une autre question, un lien , mais il fait ce que je ne veux pas: le texte dans la sortie est transformé en une mauvaise image et n'est plus sélectionnable. J'ai essayé avec Ghostscript:
gs -sOutputFile=output.pdf \
-q -dNOPAUSE -dBATCH -dSAFER \
-sDEVICE=pdfwrite \
-dCompatibilityLevel=1.3 \
-dPDFSETTINGS=/screen \
-dEmbedAllFonts=true \
-dSubsetFonts=true \
-sColorConversionStrategy=/Mono \
-sColorConversionStrategyForImages=/Mono \
-sProcessColorModel=/DeviceGray \
$1
mais cela me donne le message d'erreur suivant:
./script.sh: 19: ./script.sh: output.pdf: not found
Existe-t-il un autre moyen de créer le fichier?
Réponses:
L'exemple gs
La
gs
commande que vous exécutez ci-dessus a une fin$1
qui est généralement destinée à passer des arguments de ligne de commande dans un script. Je ne suis donc pas sûr de ce que vous avez réellement essayé, mais je suppose que vous avez essayé de mettre cette commande dans un scriptscript.sh
:Et lancez-le comme ceci:
Je ne sais pas comment vous avez configuré ce script, mais il doit être exécutable.
Cependant, quelque chose ne semble pas correct avec ce script. Quand je l'ai essayé, j'ai eu cette erreur à la place:
Une alternative
Au lieu de ce script, j'utiliserais plutôt celui de la question SU.
Ensuite, exécutez-le comme ceci:
la source
sProcessColorModel
qui devrait être à ladProcessColorModel
place.J'ai trouvé un script ici qui peut le faire. Cela nécessite
gs
ce que vous semblez avoir mais aussipdftk
. Vous n'avez pas mentionné votre distribution mais sur les systèmes basés sur Debian, vous devriez pouvoir l'installer avecVous pouvez trouver des RPM pour cela ici .
Une fois que vous avez installé
pdftk
, enregistrez le script sousgraypdf.sh
et exécutez comme suit:Il créera un fichier appelé
input-gray.pdf
. J'inclus tout le script ici pour éviter la pourriture des liens:la source
J'avais également des fichiers PDF couleur numérisés et des fichiers PDF en niveaux de gris que je voulais convertir en bw. J'ai essayé d'utiliser
gs
avec le code répertorié ici , et la qualité d'image est bonne avec du texte pdf toujours là. Cependant, ce code gs se convertit uniquement en niveaux de gris (comme demandé dans la question) et a toujours une grande taille de fichier.convert
donne de très mauvais résultats lorsqu'il est utilisé directement.Je voulais des pdfs bw avec une bonne qualité d'image et une petite taille de fichier. J'aurais essayé la solution de terdon, mais je n'ai pas pu utiliser
pdftk
centOS 7 en utilisant yum (au moment de la rédaction).Ma solution utilise
gs
pour extraire les fichiers bmp en niveaux de gris du pdf,convert
pour seuiller ces bmps pour bw et les enregistrer en tant que fichiers tiff, puis img2pdf pour compresser les images tiff et les fusionner toutes dans un pdf.J'ai essayé d'aller directement au tiff depuis le pdf mais la qualité n'est pas la même donc j'enregistre chaque page en bmp. Pour un fichier pdf d'une page,
convert
fait un excellent travail de bmp en pdf. Exemple:Pour plusieurs pages,
gs
peut fusionner plusieurs fichiers pdf en un seul, maisimg2pdf
donne une taille de fichier plus petite que gs. Les fichiers tiff doivent être décompressés en entrée dans img2pdf. Gardez à l'esprit pour un grand nombre de pages, les fichiers bmp et tiff intermédiaires ont tendance à être de grande taille.pdftk
oujoinpdf
serait mieux s'ils peuvent fusionner des fichiers pdf compressés à partir deconvert
.J'imagine qu'il existe une solution plus élégante. Cependant, ma méthode produit des résultats avec une très bonne qualité d'image et une taille de fichier beaucoup plus petite. Pour récupérer le texte dans le pdf bw, réexécutez l'OCR.
Mon script shell utilise gs, convert et img2pdf. Modifiez les paramètres (nombre de pages, numérisation dpi, seuil%, etc.) répertoriés au début si nécessaire et exécutez
chmod +x ./pdf2bw.sh
. Voici le script complet (pdf2bw.sh):la source
RHEL6 et RHEL5, qui utilisent tous les deux Ghostscript sur 8.70, n'ont pas pu utiliser les formes de la commande ci-dessus. En supposant un script ou une fonction attendant le fichier PDF comme premier argument "$ 1", ce qui suit devrait être plus portable:
Où le fichier de sortie sera préfixé avec "grey_".
RHEL6 et 5 peuvent utiliser CompatibilityLevel = 1.4, ce qui est beaucoup plus rapide, mais je visais la portabilité.
la source
sColorConversionStrategyForImages
commutateur.J'obtiens des résultats fiables en nettoyant les PDF scannés pour un bon contraste avec ce script;
la source