:-y

KrISS tuto : html, css, php et maintenant javascript

jeudi 07 février 2019 - 19:02

Cela faisait plusieurs années que j'utilisais une présentation javascript d'une autre personne alors qu'il y avait des choses du style

<SCRIPT LANGUAGE="JavaScript">...</SCRIPT>

Autant vous dire que je n'étais pas à l'aise : l'utilisation des majuscules pour les balises et l'attribut language... ça pique un peu les yeux. J'avais apporté quelques modifications sur le fichier PDF avec Master PDF editor (qui depuis la version 5 n'est plus vraiment gratuit pour exporter ses modifications mais qui est heureusement toujours disponible en version 4.3.89). D'ailleurs si vous connaissez une alternative je suis preneur...

Heureusement maintenant c'est fini parce qu'après HTML/CSS et PHP j'ai enfin agrémenter KrISS tuto de JS !

Autant vous dire que je suis bien content et mon cours est maintenant complet, uniforme et interactif grâce aux différentes consoles que j'ai adaptées pour être utilisées directement dans le navigateur avec l'affichage du code HTML/CSS et son interprétation par le navigateur, l'affichage de la console JS et la sortie du code PHP. C'est vraiment agréable pour la présentation, tout se fait dans le navigateur !

En plus je peux générer le PDF de mon cours grâce à l'attribut print-pdf dans l'url. Par contre je ne sais pas exactement pourquoi mais quand je l'imprime avec Firefox, il me génère une page blanche entre chaque diapo et j'ai donc cherché à les supprimer en ligne de commande.

J'avais déjà eu le soucis, et j'avais utilisé pdftk pour résoudre ce problème

pdftk A=fichier.pdf cat Aodd output fichier_impair.pdf

Sauf que pdftk ne s'installe plus facilement avec apt à cause de certaines dépendances. A priori il existe une version java mais je n'avais pas envie d'ajouter une source tiers pour ça et j'ai donc cherché une alternative.

Première tentative avec psselect:

pdftops fichier.pdf; psselect -o fichier.ps > fichier_impair.ps; ps2pdf fichier_impair.ps

L'option -o pour odd (impair) et -e pour even (pair).
Taille du fichier d'origine 611k, taille du fichier final 6.6M !!!
À part le fait qu'au final j'ai bien le résultat attendu, ce n'est vraiment pas une bonne solution, les conversions pdf/ps/pdf sont super longues, la création d'un fichier PS inutile et la taille du finale du fichier x10 ce n'est pas possible...

Deuxième tentative avec qpdf:

qpdf --pages fichier.pdf 1,3,5,7,9 -- fichier.pdf fichier_impair.pdf

Sauf que mon nombre de pages ne s'arrêtent pas à 10 et je n'ai pas vu d'options dans le man pour gérer les pages paires/impaires.
J'ai donc cherché à récupérer le nombre de page de mon fichier PDF avec :

pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2

et avec l'utilisation de seq pour générer la liste des pages impaires

seq 1 2 $(pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2)

pour les pages paires il suffit de commencer seq à 2

seq 2 2 $(pdfinfo fichier.pdf | grep 'Pages:' | cut -d':' -f2)

Pour avoir toutes les pages sur une seule ligne, un petit xargs et un petit tr pour remplacer les espaces par des virgules, ce qui donne au final :

file="fichier.pdf"; qpdf --pages "$file" $(seq 1 2 $(pdfinfo "$file" | grep 'Pages:' | cut -d':' -f2) | xargs | tr " " ",") -- "$file" "${file/.pdf/_impair.pdf}"

Taille du fichier d'origine 611k, taille du fichier final 502k !!! Et c'est instantané !
Vive la ligne de commande
New comment







 __        __            
/  \   /  |  \ |  |   /  
|  |  /   |__/ |\/|  /_  
|  | /_|_ | \  |  | /  \ 
\__/   |  |  \ |  | \__/