Marquer ses PDFs avec PDFtk et un script Bash

http://fr.freeimages.com/photo/received-stamp-1445061

J’ai, pour les besoins d’une association, scanné plusieurs milliers de pages de documents et ceux-ci sont stockés sur un serveur Debian accessible aux membres. Ces documents ne sont pas confidentiels, mais l’association n’apprécierait pas que ses documents se retrouvent facilement sur le net et surtout sans contrôle de diffusion. Cette diffusion pouvant être le résultat d’une faute d’un des membres (celui-ci ayant décidé de distribuer des documents à des extérieurs), soit une erreur (serveur mal protégé,…). Afin de limiter l’étendu des dégâts, à l’aide de PDFTk et d’un script de ma composition, j’ai ‘watermaké’ (mis un filigrane) les documents PDF afin de rendre clairement visible l’origine des documents.

Dans le poste qui suit, je vais vous expliquer en quelques lignes les outils utilisés, et l’organisation des données afin de pouvoir ‘watermaké’ facilement plusieurs centaines/milliers de documents PDF. Les documents originaux seront eux, inchangés.
Tout ceci se fera sous Linux. Amis windossiens, désolé, je ne peux rien pour vous….

Les outils

Il n’y a pas besoin de grand chose, juste d’un outil qui permet d’éditer les PDF en ligne de commandes et d’un script.
Deux outils ont particulièrement attiré mon attention:

jPDFTweak

J’ai dans un premier temps essayé JPDFTweak.
L’annonce comme couteau suisse du PDF est vraie. On peut faire plein de chose sur les PDF avec jPDFTweak et cela m’a convaincu. Un des avantage est que jPDFTweak propose une interface mais qu’il est également possible de le contrôler par lignes de commandes… Cependant, j’ai eu quelques soucis lors de la mise en place du script Bash. Je n’arrivai pas à naviguer comme je le souhaitais dans les répertoires… ce qui est un peu handicapant.

PDFTk

Dans un second temps j’ai découvert PDF Tool Kit (PDF tool kit) qui n’est disponible qu’en ligne de commandes (ce qui dans mon cas est un avantage).
Pour l’installation de PDFtk, on reste sur la solution habituelle:

La préparation

Pour l’opération de ‘watermarquage’, PDFtk a besoin d’un PDF contenant le filigrane. il vous faut donc créer ce PDF. J’ai pour ma part créé celui-ci dans Gimp et enregistré directement en PDF.

En ce qui concerne l’organisation des données, il est préférable qu’il y ait un répertoire source de PDF. il est possible d’organiser les PDF par répertoires, mais que ceux-ci aient à un moment un unique parent.

Enfin, plus par soucis de faciliter la vie, on supprimera les espaces ‘ ‘ dans les noms de fichiers et répertoires. Bash n’a pas trop l’air d’apprécier les espaces. Afin de faciliter cette démarche, le script remplacera dans un premier temps tous les espaces trouvés dans les noms de fichiers et de répertoires.

Le script

Pour mon cas, j’ai créé un répertoire PDF_Originaux (j’ai fait dans l’originalité). Ce répertoire contiendra toute l’architecture de répertoires, les documents PDF, mais aussi d’autres types de documents… L’ensemble du contenu du répertoire PDF_Originaux sera copié dans le répertoire de destination PDF_Modifies qui contiendra toute les données initiales (incluant les PDF modifiés).
La copie des documents autres que les PDF s’effectue par une commande rsync. Si vous modifier l’organisation des répertoires dans le répertoire PDF_Originaux, ceux-ci seront répercutés dans le répertoire destination.
Cependant, par sécurité, les suppressions de fichiers ou répertoires d’origines, ne sont pas répercutés dans le répertoire de destination (si besoin, voir les options de rsync).
Une fois la synchronisation effectuée, on traite les PDF en parcourant les répertoires en utilisant pdftk.

En pratique

J’utilise pydio pour partager les documents. Le répertoire des PDF Originaux est partagés uniquement avec ceux qui doivent déposer des documents sur le serveur.
Le script est ensuite exécuté régulièrement (taches Cron), et les utilisateurs ont accès aux documents watermakés via l’interface de pydio. Pour l’ensemble des intervenants, le processus de watermarking est transparent.
Le script n’est pas parfait, loin de là. Mais il traite assez rapidement les centaine de PDF disponibles sur le serveur (environ une dizaine de minutes d’execution sur une machine qui n’est pas une bête de course).

Amélioration possible

Quelques améliorations sont encore faisables, notamment:

  • Je souhaiterai que le nom, date… soient automatiquement incrustés dans le pdf lors du téléchargement. Un addon pydio devraient pouvoir le faire, mais je n’ai pas encore regardé cette option.
  • Amélioré la copie: si un document est plus récent dans les originaux, il ne sera pas copié car il existe déjà dans le répertoire destination. Actuellement, il n’y a donc pas copie parfaire de la source. Dans notre cas, le risque est faible, car les documents évoluent peu.
  • Éditer les metadata des PDS afin de rajouter diverses informations (titres, origine,…).

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

www.000webhost.com