La bonne nouvelle : il y a un moyen de capturer votre pdf dans son intégralité.
La mauvaise nouvelle : c'est un peu long et le pdf pourrait ne pas être correct à 100% !
(C'est mieux que rien, non?)
Alors, pour que tout fonctionne, vous devrez faire ce qui suit :
- Téléchargez une version de NodeJS depuis ici et installez-la
- a. Si vous avez
git
installé, il vous suffit de cloner le dépôt mozilla/pdf.js
depuis github
comme ceci
git clone git://github.com/mozilla/pdf.js.git pdfjs
et cd
dans le répertoire
b. si vous n'avez pas git
, vous devrez alors télécharger tout le dépôt de code depuis ici: https://github.com/mozilla/pdf.js/archive/master.zip
décompressez-le puis ouvrez invite de commandes
et cd
dans le répertoire racine
- exécutez
node make server
En ce moment, vous avez créé un serveur web fonctionnant sur localhost:8888
capable de rendre des pdf en utilisant JavaScript
. Vous pouvez voir un exemple de pdf en visitant la page suivante : http://localhost:8888/web/viewer.html?file=/examples/learning/helloworld.pdf
Ensuite, vous devrez télécharger PhantomJS.
- Téléchargez-le depuis ici
- Décompressez-le où vous voulez, puis depuis l'invite de commandes
cd
dans le dossier bin
- Copiez le fichier
rasterize.js
du dossier examples
de phantomjs
dans le dossier bin
(Je sais que c'est un peu sale mais on pourra trier ça plus tard, non?)
- Ouvrez
rasterize.js
car nous devons effectuer un changement.
- Allez à la ligne
45
et changez le délai de 200
à quelque chose comme 5000
pour le moment. Le code devrait ressembler à : https://gist.github.com/HaykoKoryun/eba33f2011d3d69b773b
- Placez une copie du fichier
pdf
que vous souhaitez capturer dans un dossier appelé test
dans le dossier racine de pdfjs
- Enfin, exécutez la commande suivante
phantomjs.exe rasterize.js http://localhost:8888/web/viewer.html?file=/test/xxx.pdf test.png 1920px*1080px
Pourquoi ces paramètres me direz-vous? Le premier indique à phantomjs
quel script exécuter. C'est simple, dans notre cas c'est la version modifiée de rasterize.js
!
Le deuxième est l'URL à charger, qui est le serveur web local exécutant pdfjs
. Notez que vous devrez remplacer xxx
par le nom de votre fichier pdf
.
Le troisième paramètre est le nom et le format du fichier où vous enregistrerez la capture.
Enfin, le dernier paramètre est la taille de la capture. Vous devrez jouer avec la taille pour vous assurer de capturer toute la page.