Aller au contenu principal
Bienvenue sur Forum Puppy Linux - Toutou Linux - Astuces - Aides !
Lorsque vous n'êtes pas connectés vous pouvez visiter la totalité du forum mais avec certaines restrictions : cf le règlement pour les visiteurs non connectés. Vous êtes chaleureusement conviés à vous inscrire afin de bénéficier de toutes les fonctionnalités du forum et de participer aux échanges.
Sujet: pdftocairo : découper une zone dans un document multi-pages (Lu 161 fois) sujet précédent - sujet suivant
0 Membres et 1 Invitédans ce sujet

pdftocairo : découper une zone dans un document multi-pages

Les toutouphiles, bien le bonjour,

Problématique
Je possède un document au seul format .pdf que je souhaite partager avec le monde entier, rien de moins.
Toutefois, les en-tête et pied de page contiennent des informations qui révèlent la source du document.
Et, je ne veux pas que le monde entier connaisse la source du document que je veux diffuser.
Comment faire ?

Résolution
Pour commencer, il convient de rappeler une métrique très approximative (pour une résolution de 96 dpi) :
  •   1 cm = 38 pixels ;
  •   1 mm = 3,78 pixels.
Gardons ces informations en mémoire vive, nous en aurons besoin.

En fait, c'est un peu plus complexe puisque la résolution du document doit être prise en compte.
Pour connaître le nombre de pixels au centimètre, on utilisera pdfinfo qui fournira sur la ligne "page size" les dimensions de la page en points (ou pixels).
Partant, il est aisé de calculer le nombre de pixels par centimètre pour une page A4 dont la largeur est de 21 cm.
La formule sera :
[largeur en points] / 21 = nb de pixels par cm
C'est ce chiffre que vous devrez substituer à ce qui suit.


Méthodologie proposée
Pour résoudre notre dilemne, nous utiliserons pdftocairo, déjà présenté sur ce site.
La consultation de l'aide intégrée fournit une piste.
En effet :

$ pdftocairo --help
  ...
  -x <int>                : x-coordinate of the crop area top left corner
  -y <int>                : y-coordinate of the crop area top left corner
  -W <int>                : width of crop area in pixels (default is 0)
  -H <int>                : height of crop area in pixels (default is 0)
  ...


Nous allons devoir écrire une commande qui requiert ces 4 paramètres.
Elle devrait ressembler à ceci :
$ pdftocairo -pdf -x <x pixels> -y <y pixels> -W <W pixels> -H <H pixels>

Par défaut, pdftocairo utilise une résolution paramétrée à 150 dpi : elle peut être modifiée en introduisant l'option -r suivie de la valeur entière voulue en dpi (i.e., -r 200).
Nous le voyons, ce sont des mesures en pixels qui sont attendues.
Rappelons notre mémoire vive et ardente.

On estime que la partie supérieure à tronquer mesure 3 cm.
La conversion en pixels donne :
  3 x 38 = 114 pixels
Nous avons une position "y" indicative qu'il faudra peut-être ajuster le moment venu.
Comme la marge gauche ne contient aucune information sensible et/ou délicate, nous n'avons pas besoin de mesurer "x".
On peut le définir à zéro ou l'ignorer.
Sinon, il suffit d'utiliser la méthode appliquée pour définir "y".

Calculons la zone à conserver maintenant.
Nous garderons la largeur de la page, soit 21 cm ou 798 pixels.
La largeur "W" de la zone vient d'être calculée.
Pour la hauteur "H", s'agissant d'une page au format A4, nous allons retrancher la valeur de la partie supérieure à couper et celle de la partie supérieure qui est estimée à une valeur identique, soit 3 cm, de la hauteur de page qui mesure 29,70 cm.
Nous obtenons :
  29,70 - 3 - 3 = 23,70 cm, soit encore 900,6 que l'on arrondi à 900 pixels puisque c'est un entier qui est attendu.
Là encore, c'est une indication. Il sera peut-être nécessaire d'affiner plus tard.
 
La commande initiale peut être codée ainsi :
$ pdftocairo -pdf -y 114 -W 798 -H 900 couper_une_zone_avec_pdftocairo.pdf document_cible.pdf

Il est rappelé que la valeur de "x" ne nous intéresse pas puisque la marge gauche ne contienne aucune donnée qui permettrait d'identifier la source. On pourrait aussi l'inclure dans la commande avec une valeur à zéro, soit "-x 0".

À noter
À ce stade, les valeurs de "y", "W" et "H" sont des estimations.
Il faudra probablement réaliser plusieurs essais avant de produire le document cible voulu.
Les réglages, pour cet exemple, porteront sur "x" et "H".
Pour information, les valeurs définitives étaient :
$ pdftocairo -pdf -y 85 -W 798 -H 660 couper_une_zone_avec_pdftocairo.pdf document_cible.pdf


Document avant :
avant.png

Document après :
où nous ne voyons plus ce que l'on voulait cacher :
apres.png

Les zones à soustraire ont bien disparu.
Je peux maintenant diffuser mon document au monde entier.

Pour un document mono-page, ce n'est pas la solution idéale, mais pour un document de plusieurs dizaines de pages, malgré les tâtonnements , il peut  s'avérer utile.

Amusez-vous bien !

Amitiés.
Vive Toutou Linux
"Tout le monde a le droit de vivre en paix !" dit une dame africaine.

 
Simple Audio Video Embedder