Convertir des manuels numériques

Certains éditeurs de manuels scolaires (par exemple Bordas ou Nathan) proposent leurs manuels numériques aux enseignants, sous la forme de logiciels permettant de parcourir ces manuels. Ce n'est pas toujours idéal :

  • ils ne fonctionnent que sur Windows (j'utilise Debian, certains utilisent Ubuntu ou d'autres distributions GNU/Linux ; d'autres utilisent Mac ; certains voudraient accéder à ces manuels avec une tablette Android ou iPad, etc.). Pour tous ces utilisateurs, il n'est pas possible d'accéder à la version numérique de ces manuels ;
  • ces manuels sont fournis avec leur propre visionneuse. Pourquoi ? Un PDF est lisible partout, en utilisant un logiciel auquel je suis habitué : je ne veux pas d'autre logiciel pour cela.

Cet article explique comment convertir ces manuels numériques en un fichier PDF.

Avant propos

Pour éviter ces désagréments, si vous le pouvez, utilisez des manuels libres, comme ceux de Sésamath : ils sont édités sous forme papier comme tous les autres, mais en plus, il sont diffusés sous une licence libre, et disponibles en PDF. N'importe qui peut gratuitement et légalement les télécharger, projeter en classe, distribuer, copier, modifier, réutiliser, etc.

Avant de commencer, nous pouvons étudier la légalité de cette conversion. Deux aspects sont à considérer : le droit (ou l'interdiction) de copier et diffuser ces manuels d'une part ; et le droit (ou l'interdiction) de contourner les DRM d'autre part.

Copie et Diffusion

Il est à priori interdit de copier ces manuels sans autorisation. Mais l'article L122-5 du code de la propriété intellectuelle prévoit des exceptions, en particulier :

Lorsque l'oeuvre a été divulguée, l'auteur ne peut interdire :

(…)

2° Les copies ou reproductions réalisées à partir d'une source licite et strictement réservées à l'usage privé du copiste et non destinées à une utilisation collective (…).

Autrement dit, cette conversion (qui est en fait, légalement, une copie) est légale, sous réserve que ce soit fait de manière privée, c'est-à-dire :

  • que vous alliez vous même télécharger le manuel sur le site de l'éditeur (si un collègue vous donne sa version, c'est illégal) ;
  • que vous réalisiez vous-même la conversion décrite dans cet article (si une amie qui s'y connaît mieux que vous en informatique s'en occupe, c'est illégal ) ;
  • que cette copie reste dans un cadre privé (si vous distribuez votre version PDF à des collègues, c'est illégal) ;
  • que cette copie ne soit pas diffusée (si vous projetez votre version PDF à vos élèves, c'est illégal).

Remarquons pour le dernier point que j'ai été surpris d'apprendre qu'une projection en classe en utilisant le manuel numérique d'origine est légale (en tous cas pour le manuel Hyperbole Mathématiques, Terminale ES/L + Spécialité ES, édition 2012, Nathan), comme le montre cet extrait de la licence.

NATHAN vous concède (…) le droit de représenter par vidéo-projection dans votre classe tout ou partie des ressources du manuel pour un usage scolaire uniquement.

Contournement du dispositif technique de protection (DRM)

Cette partie là est plus délicate…

Ce manuel est (mal) protégé par un dispositif technique de protection (en anglais DRM), ce qui est une très mauvaise chose (voir l'analyse de l'APRIL à ce sujet) : ces manuels ne peuvent être lus qu'en utilisant une clef fournie par l'éditeur (gratuitement pour les professeurs utilisant ce manuel en classe), et la méthode décrite dans cet article propose de contourner ces mesures, sans avoir besoin de cette clef. Or, depuis l'introduction de la loi DADVSI, l'article L335-3-1 du code de la propriété intellectuelle interdit ceci :

I. — Est puni de 3 750 euros d'amende le fait de porter atteinte sciemment (…) à une mesure technique efficace telle que définie à l'article L. 331-5, afin d'altérer la protection d'une oeuvre par (…) toute autre intervention personnelle destinée à contourner, neutraliser ou supprimer un mécanisme de protection ou de contrôle (…).

En s'arrêtant à cette analyse, la méthode décrite dans cet article est illégale (sauf si l'on remarque que la loi parle d'une mesure technique efficace, ce qui est loin d'être le cas ici, mais vu le jugement rendu pour l'affaire Bluetouff, je doute qu'un juge accepte cet argument).

Mais, en réaction au vote de la loi DADVSI, l'APRIL avait posé une requête en annulation auprès du conseil d'État, car il n'était alors plus possible, par exemple, de lire des DVD avec VLC sous GNU/Linux. En effet, les DVD sont protégés par les mêmes mesures de protection, et l'application stricte de la loi rend cette lecture illégale. Mais le conseil d'État avait rétabli l'exception de contournement à des fins d'interopérabilité (en d'autres termes, il est légal de contourner une mesure de protection si celle-ci rend impossible la lecture d'un contenu légal sur son système d'exploitation), selon l'article L122-6-1 du code de la propriété intellectuelle :

I. Les actes prévus aux 1° et 2° de l'article L. 122-6 ne sont pas soumis à l'autorisation de l'auteur lorsqu'ils sont nécessaires pour permettre l'utilisation du logiciel, conformément à sa destination, par la personne ayant le droit de l'utiliser, y compris pour corriger des erreurs.

Je pense donc que cette exception s'applique aussi ici (le logiciel fourni pour lire les manuels ne fonctionne que sous Windows), mais je ne suis pas juriste…

Conversion

L'article L122-6-2 du code de la propriété intellectuelle mentionne :

Toute publicité ou notice d'utilisation relative aux moyens permettant la suppression ou la neutralisation de tout dispositif technique protégeant un logiciel doit mentionner que l'utilisation illicite de ces moyens est passible des sanctions prévues en cas de contrefaçon.

Je suis donc tenu de vous inviter (si vous ne l'avez pas déjà fait) à lire la première partie de cet article, dans laquelle je rappelle que l'application de la méthode décrite ici est illégale (et passible de sanctions) sauf dans des cas bien précis.

Préambule technique

Toutes les étapes décrites ici sont faites en utilisant la ligne de commande, sur un système Gnu/Linux (Debian pour être plus précis). Il est sans doute possible de faire ces manipulations autrement (sous un autre système d'exploitation, avec une méthode graphique), mais je ne sais pas faire.

Cette méthode est décrite pour le manuel Hyperbole Mathématiques, Terminale ES/L + Spécialité ES (édition Nathan, 2012) ; il est possible que certains détails changent avec un autre manuel.

Installation des logiciels nécessaires

Cette méthode utilise les outils suivants (en plus des logiciels standards sur un environnement GNU/Linux) :

  • unzip pour décompresser l'archive ;
  • swftools pour convertir les fichiers .swf en images ;
  • imagemagick pour convertir les images en PDF ;
  • pdftk pour assembler les pages en un seul PDF.

Sous Debian et ses dérivées, la commande suivante installe tous ces outils :

sudo apt install unzip swftools imagemagick pdftk

Extraction de l'archive

Le manuel téléchargé se présente sous la forme d'une archive .zip. Il faut tout d'abord commencer par décompresser cette archive, avec votre gestionnaire d'archive préféré, ou en ligne de commande.

unzip 9782091726748L.zip

Cette archive contient le logiciel de protection et visualisation des données, ainsi que l'ensemble des pages du manuel, au format .swf.

9782091726748L
├── data
│   ├── …
│   └── publication
│       ├── …
│       └── pages
│           ├── 1.swf
│           ├── 2.swf
│           ├── 3.swf
│           ├── 4.swf
│           └── …
├── HYP_TES.exe
├── licence.txt
└── Lisez_moi.txt

Déplaçons nous dans le dossier contenant toutes les pages.

cd 9782091726748L/data/publication/pages

(Optionnel) Renommage des fichiers

L'ordre alphabétique des noms de fichiers ne correspond pas à leur ordre logique : la page 100.swf arrive, par ordre alphabétique, avant la page 22.swf. La commande suivant ajoute le bon nombre de zéros en début de noms de fichiers pour corriger cela.

for nom in *.swf
do
  mv $nom $(echo $nom | sed -E -e 's/^/0000/' -e 's/^[0-9]*([0-9]{4})/\1/')
done

Conversion des fichiers en image

La conversion de chaque page en une image se fait avec swfrender, de la manière suivante :

for nom in *.swf
do
  echo "Page $(basename $nom .swf)"
  swfrender $nom -r 144 -o $(basename $nom swf)png
done

Cette commande peut être assez longue (huit minutes avec une résolution de 144 dpi sur mon ordinateur). Pour information, voici le rendu avec différentes valeurs pour cette résolution. Notez qu'entre la plus basse et la plus haute résolution proposée ici, la taille du fichier est multipliée par 14.

  • 72 dpi : 72 dpi
  • 144 dpi : 144 dpi
  • 216 dpi : 216 dpi
  • 288 dpi : 288 dpi
  • 360 dpi : 360 dpi
  • 432 dpi : 432 dpi
  • 504 dpi : 504 dpi
  • 576 dpi : 576 dpi
  • 648 dpi : 648 dpi

Conversion des images en PDF

Il faut maintenant convertir chacune des pages en un PDF.

for page in *png
do
  echo $page
  convert $page -page 510x708 $(basename $page png)pdf
done

Encore une fois, cette commande peut être assez longe (une minute sur mon ordinateur).

Notez qu'en théorie, il est possible de faire cela en une seule commande convert *png -page A4 manuel.pdf (ce qui rend inutile l'étape suivante), mais sur mon ordinateur, convert manque de mémoire pour manipuler autant d'images.

Enfin, l'argument de -page est la taille en pixels. Selon le manuel d'Imagemagick, le format A4 correspond à une dimension de 595 × 842 ; par proportionnalité, nous en déduisons que le format du manuel (18cm × 25cm) correspond à une dimension de 510 × 708.

Concaténation des pages

La dernière étape consiste en la concaténation de toutes ces pages en un seul fichier PDF.

pdftk *pdf cat output manuel.pdf

Voilà ! Le manuel numérique est maintenant présent sous la forme du fichier manuel.pdf.

Bilan

Cette méthode produit un fichier PDF, qui a (au moins) trois défauts:

  • chaque page est une image, donc il n'est pas possible de faire une recherche dans le texte ;
  • chaque page est une image, donc le fichier est très lourd (118 Mo, ce qui est gros, avec une résolution de 144 dpi, ce qui est faible) ;
  • avec ce manuel, l'ordre des pages n'est pas respecté (par exemple, le fichier 370.swf contient la page 167, ce qui fait que la page 370 du manuel final contient la page 167 du manuel papier. Je ne sais pas s'il s'agit d'une erreur de l'éditeur, ou d'une mesure supplémentaire de protection. Il est possible de corriger cela en étudiant chacune des pages du manuel, et en corrigeant son nom si nécessaire.