Developpez.com

Le Club des Développeurs et IT Pro

Les PDF succombent à la tentation du HTML5 et du JavaScript

Pdf.js : un projet de la fondation Mozilla

Le 2011-06-27 23:25:47, par Idelways, Expert éminent sénior
Les navigateurs reposent à présent sur des plug-ins pour afficher les fichiers PDF, mais cela pourrait bientôt changer avec la révélation d'un nouveau projet de la fondation Mozilla.

Ce projet en développement depuis quelques mois s'appelle « pdf.js ». Il substitue d'une manière encore perfectible, mais prometteuse, les rendu des plug-ins avec la balise <Canvas> (de dessin 2D en HTML5), pilotée par du JavaScript.

Une démonstration disponible sur le site du contributeur principal du projet (le chercheur Andreas Gal) permet de parcourir les pages d'un fichier PDF d'exemple, riche en combinaisons de textes et d'illustrations, ou d'essayer avec son propre document.

À présent, cette démonstration charge tous les fichiers du projet, cible et prépare manuellement l'affichage du PDF, mais son équipe affiche l’ambition de l'intégrer bientôt à Firefox en passant par la case d'extension, tout en stabilisant le produit.

Les membres de l'équipe estiment qu'il leur faut moins de 3 mois pour prendre en charge la majorité des fonctionnalités communément utilisées dans les PDF.

L'initiative de la fondation Mozilla promet en outre d'être plus sure que le plug-in populaire Adobe, car le code JavaScript n'a pas accès aux mêmes privilèges que le code natif, ce qui devrait grandement compliquer la tâche des pirates.

En ce sens, il convient de rappeler que ce projet a un concurrent qui permet de lire des PDF depuis quelques versions sur Google Chrome, sans plug-in supplémentaire.
La différence est toutefois de taille : le Reader de Chrome est codé en natif alors que celui de la fondation repose entièrement sur les standards du Web.



Ce projet est rendu possible, tout d'abord, grâce à la prise en charge avancée des standards SVG et du module Canvas, mais surtout l'amélioration drastique en terme de performances du rendu graphique et des moteurs JavaScript sur les navigateurs modernes, Mozilla Firefox en l'occurrence.

Décidément, JavaScript est partout, même là où on le soupçonnait le moins.

Démonstration sur cette page
Le code source de pdf.js est accessible sur cette page

Source : blog d'Andreas Gal

Et vous ?

Qu'en pensez-vous ?
  Discussion forum
15 commentaires
  • gokudomatic
    Membre régulier
    Envoyé par Tab
    Sans aller si loin (le "très" je suis plutôt d'accord, on perd beaucoup dans l'utilisation première de ce type de document : être portable (d'où le nom de pdf me semble-t-il).

    Un document consultable en ligne bien présenté c'est le rôle de (X)HTML, en proposer une copie PDF ok mais pas afficher le PDF directement quelque soit la technique. Néanmoins si on peut faire l'inverse : générer un PDF à partir de l'arbre DOM avec cette bibliothèque c'est

    Perso mon firefox est configuré pour enregistrer les PDF par défauts : ni les afficher in-browser ni lancer adobe, juste les enregistrer donc je rejoins totalement Paul TOTH.
    J'ai du mal à voir le mal dans la conception d'un autre pdf reader, même si c'est fait purement en javascript. ça ne rendra pas le fichier pdf moins portable, mais ça permettra de s'affranchir de l'installation d'un executable reader, sans compter le bénéfice du sandbox que procure le navigateur.
    Personnellement, je vois ce projet d'un bon oeil.
  • Paul TOTH
    Expert éminent sénior
    Personnellement je trouve que c'est une très mauvaise idée.

    Les navigateurs sont fait pour consulter des sites web, pas des documents PDF.

    on a déjà trop de sites web qui proposent de consulter des documents PDF en ligne. Si le navigateur (que ce soit via un plugin Adobe, ou du JS) propose nativement de lire du PDF, on aura encore plus de contenu en ligne au format PDF.

    Maintenant le format PDF a un intérêt certain dans l'édition de rapport, c'est un format connu, "tout le monde" peut lire les PDF et les impressions sont fidèles à l'original, tout cela avec un poids réduit. C'est un format très adapté aussi pour la consultation hors ligne (comme utilisé par les articles de développez.com). Personnellement dans 95% des cas je fais un "clic droit/enregistrer sous", ou pire je dois rechercher l'URL du document quand celui-ci s'ouvre via un appel Javascript afin de télécharger le document pour l'ouvrir - une fois totalement téléchargé - sous Adobe Reader au lieu de l'avoir dans le navigateur.

    Et quand on regarde la démo proposée, le document - quand il s'affiche - est sous forme d'image dont le texte ne peut être sélectionné. C'est sans doute un bel effort technique, mais je suis contre son utilisation.
  • Uther
    Expert éminent sénior
    Envoyé par Wormus
    Alors ça c'est une très bonne nouvelle !
    Pouvoir créer un PDF directement en Javascript et HTML5, ça va me faciliter les choses. Ayant l'habitude d'utiliser PHP pour le faire avec des librairies comme fpdf ou tcpdf qui sont limité ou mal documenté c'était pas toujours évident et puis ça nécessité d'avoir un Adobe Reader derrière par exemple.
    Je crois que tu as mal compris. Il ne s'agit pas de créer des PDF mais de les consulter. Il s'agirait en fait d'une extension un peu comme le plugin Reader actuel. La seule différence est qu'elle est programmée avec HTML5/Javascript. Ce qui la rend plus sure.

    Si tu veux faire du pdf ent html, tu devrais regarder du coté de http://html2pdf.fr/

    Envoyé par Paul TOTH
    Personnellement je trouve que c'est une très mauvaise idée.

    Les navigateurs sont fait pour consulter des sites web, pas des documents PDF.
    A une époque j'aurai été d'accord, mais aujourd'hui les navigateur navigateurs sont déjà tous capable de faire beaucoup plus de chose qu'afficher des sites web (images, video, ftp, ...).
    Le PDF est un format comme tu le dit très pratique dans certains cas bien particuliers (document techniques le plus souvent), je ne pense pas que l'on aura des abus de pdf comme on a pu abuser de flash a une époque.
  • kdmbella
    Expert éminent
    super cette trouvaille de FF cella montre encore que le web de demain se fera avec JS et donc ça m'encourage encore à mieux apprendre ce langage. d'autre part le HTML5 monte aussi en puissance ce qui promet un web futur super léger
  • Uther
    Expert éminent sénior
    Envoyé par Paul TOTH
    en fait il y a des sites qui exploitent le format PDF pour la simple et bonne raison qu'ils rédigent leurs articles sous Open/MS Office et qu'il devient alors naturel de publier au format PDF pour ne pas avoir à choisir entre DOC et ODT
    - ces sites là ne sont vraiment pas légion, et je doute qu'ils le deviennent.
    - de toute façon ca ne change rien par rapport a l'utilisation d'un plugin.
    - est-ce vraiment grave? Je préfère largement ça à du HTML généré par Word.

    Envoyé par Paul TOTH
    or donc il n'est pas ici question d'afficher un PDF, mais de produire un document que à peu près tout le monde pourra imprimer correctement...et là je demande à voir ce que donne un Fichier/Imprimer sur une page HTML5 avec Canvas contenant un PDF de 15 pages !
    Si jamais ça arrive en stade final, il me parait évident que ce problème sera pris en compte. Je trouve idiot de critiquer ce qui n'est encore qu'un début de démo technique comme s'il s'agissait d'un produit fini.
  • ValCapri
    Membre habitué
    En effet, c'est une très bonne nouvelle. On va pouvoir se débarrasser du plugin PDF d'adobe, en plus il ne fonctionne pas sous Firefox 5 Mac.

    Espérons que ça nous aide aussi au nouveau de la conversion XML > PDF par ex.
  • Tab
    Membre averti
    Envoyé par Paul TOTH
    Personnellement je trouve que c'est une très mauvaise idée.
    Sans aller si loin (le "très" je suis plutôt d'accord, on perd beaucoup dans l'utilisation première de ce type de document : être portable (d'où le nom de pdf me semble-t-il).

    Un document consultable en ligne bien présenté c'est le rôle de (X)HTML, en proposer une copie PDF ok mais pas afficher le PDF directement quelque soit la technique. Néanmoins si on peut faire l'inverse : générer un PDF à partir de l'arbre DOM avec cette bibliothèque c'est

    Perso mon firefox est configuré pour enregistrer les PDF par défauts : ni les afficher in-browser ni lancer adobe, juste les enregistrer donc je rejoins totalement Paul TOTH.
  • dtcSearch
    Membre actif
    Pour lire les PDF, y'a vraiment peu d'intérêt,
    Chrome intègre déjà son propre Viewer natif qui suffit à la lecture de PDF, les autres vont suivre sous peu.

    En créer par contre ça pourrai être bien plus intéressant, pouvoir les créer à la voler en utilisant les ressources du client, quand on connait le temps que ça prend avec TCPDF par exemple...
  • Uther
    Expert éminent sénior
    Envoyé par vintz72
    J'ai testé le lien avec FF5 : ça marche très mal. Il manque les 3/4 de la page, certaines sont même complètement vide. C'est possible que ce soit un problème de driver cela dit, parce que par exemple Angry birds ne fonctionne pas non plus son mon FF (du boulot).
    C'est pas pour rien qu'il ne s'agit que d'une démonstration technique:
    "Les membres de l'équipe estiment qu'il leur faut moins de 3 mois pour prendre en charge la majorité des fonctionnalités communément utilisées dans les PDF."
  • ner0lph
    Membre averti
    Envoyé par Wormus
    Alors ça c'est une très bonne nouvelle !
    Non, ce n'est pas au navigateur de faire ça, les PDF ne font pas partie intégrante d'une page web, ce sont des annexes.
    Envoyé par Wormus
    Pouvoir créer un PDF directement en Javascript et HTML5, ça va me faciliter les choses.
    Sauf erreur de ma part, il s'agit de lire, pas de créer.
    Envoyé par Wormus
    et puis ça nécessité d'avoir un Adobe Reader derrière par exemple.
    Non. Il suffit d'avoir un lecteur de PDF, comme les logiciels libres Sumatra PDF sous Windows, Evince sous GNU/Linux, etc. Adobe Reader est totalement inutile dans 97 % des cas (taux pifométrique personnel).