web-dev-qa-db-fra.com

Convertir multipage PDF en PNG et retour (Linux)

J'ai beaucoup de documents PDF PDF que je veux convertir en PNG, modifier dans Gimp, puis réenregistrer dans le fichier Acrobat de plusieurs pages. Je remplis des formulaires et j'ajoute une signature numérisée, en essayant pour éviter d'imprimer, de signer, puis de numériser à nouveau, avec la possibilité de saisir les informations que je dois saisir.

J'ai essayé d'utiliser Imagemagick pour convertir des fichiers png, ce qui semble bien fonctionner. J'utilise la commande convert -quality 100 -density 300x300 multipage.pdf single%d.png
(Je ne sais pas vraiment si le paramètre de qualité est bon pour png).

Mais j'ai des problèmes avec la sauvegarde au format PDF. Certains fichiers ont la mauvaise taille de page, et j'ai essayé toutes les commandes et procédures que je peux trouver, mais il y a toujours quelques tailles étranges. La résolution semble varier de sorte qu'elle semble bonne à un certain niveau de zoom, mais soit quelques pages sont spécifiées à environ 2 "de large, soit 8,5x11 mais les autres font environ 35" de large. J'ai essayé de m'assurer que Gimp avait la taille et la résolution de la toile correctes, et d'enregistrer la résolution dans le fichier, mais cela ne semble pas avoir d'importance.

La commande que j'utilise pour enregistrer les fichiers est convert -page letter -adjoin single*.png multipage.pdf J'ai essayé d'autres paramètres, mais aucun ne semblait avoir d'importance.

Si quelqu'un a des idées ou des alternatives, je l'apprécierais.

27
Marty Fried

"Je ne sais pas vraiment si le paramètre de qualité est bon pour PNG."

Pour la sortie PNG, le -quality le paramètre est très différent du paramètre de qualité JPEG (qui est simplement un entier de 0 à 100).

Pour PNG, il est composé de deux chiffres simples:

  • Le premier chiffre (dizaines) est (en grande partie) le niveau de compression zlib, et il peut aller de 0 à 9.
    (Cependant, le réglage de 0 a une signification particulière: lorsque vous l'utilisez, vous obtiendrez la compression Huffman, pas le niveau de compression zlib 0. C'est souvent mieux ... Bizarre mais vrai.)

  • Le deuxième chiffre est le type de filtre de codage des données PNG (avant qu'il ne soit compressé):

    • 0 est nul,
    • 1 est "sub",
    • 2 est "up",
    • 3 est "moyen",
    • 4 est "Paeth", et
    • 5 est "adaptatif".

En termes pratiques, cela signifie:

  • Pour les illustrations avec des séquences de couleurs unies, un filtre "aucun" (-quality 00) est généralement le plus approprié.
  • Pour les photos de paysages naturels, un filtrage "adaptatif" (-quality 05) est généralement le meilleur.

"J'ai des problèmes avec la sauvegarde au format PDF. Certains fichiers ont la mauvaise taille de page, et j'ai essayé toutes les commandes et procédures que je peux trouver [...] mais soit quelques pages sont spécifiées à environ 2 "de large, ou elles sont 8,5 x 11 mais les autres ont environ 35" de large.

N'ayant pas à disposition vos fichiers PNG, j'en ai créé quelques simples avec des dimensions différentes pour vérifier les différentes commandes (comme je n'en étais plus sûr moi-même). En effet, celui que vous avez utilisé:

convert -page letter -adjoin single*.png multipage.pdf

crée toutes les pages PDF au format (même) lettre), mais il place toujours mon échantillon de PNG (de tailles différentes) dans le coin inférieur gauche du PDF page. (Si un PNG dépasse la taille de la page PDF, il les réduit pour les adapter - mais il n'agrandit pas les PNG plus petits pour remplir l'espace disponible).)

La modification suivante de la commande placera les PNG au centre de chaque page PDF:

convert           \
  -page letter    \
  -adjoin         \
   single*.png    \
  -gravity center \
   multipage.pdf

Si cela ne vous convient toujours pas, vous pouvez appliquer une mise à l'échelle (éventuellement non proportionnelle!) Pour presque remplir la zone des lettres en ajoutant un -scale '590!x770!' paramètre (cela laissera une bordure de 11 pt à chaque bord de la page):

convert              \
  -page letter       \
  -adjoin            \
   single*.png       \
  -gravity center    \
  -scale '590!x770!' \
   multipage.pdf

Pour supprimer la bordure supplémentaire, utilisez -scale '612!x792!'. - Si vous souhaitez que seule une mise à l'échelle vers le haut se produise si nécessaire tout en conservant le rapport d'aspect du PNG, utilisez -scale '590<x770<':

convert              \
  -page letter       \
  -adjoin            \
   single*.png       \
  -gravity center    \
  -scale '590<x770<' \
   multipage.pdf 
32
Kurt Pfeifle

Pourquoi ne pas simplement utiliser Xournal ? C'est ce que j'utilise pour annoter des PDF

6
Tim