25 points par GN⁺ 2025-08-16 | 1 commentaires | Partager sur WhatsApp
  • EmbedPDF est une visionneuse PDF open source qui peut être intégrée facilement dans n’importe quel projet JavaScript
  • Compatible avec divers frameworks frontend comme React, Vue, Svelte, Preact et Vanilla JS
  • Inclut de nombreuses fonctionnalités comme les annotations, le surlignage, la suppression réelle de texte (redaction), la recherche, le zoom et la rotation
  • La structure à plugins et le défilement virtuel améliorent à la fois les performances et l’extensibilité
  • Sous licence MIT, librement utilisable et ouvert aux contributions

Présentation du projet de visionneuse PDF open source EmbedPDF

  • EmbedPDF est une visionneuse PDF open source indépendante du framework, facile à intégrer dans n’importe quel projet JavaScript
  • Distribuée sous licence MIT, elle se distingue par sa compatibilité avec les frameworks frontend modernes comme React, Vue, Svelte, Preact et Vanilla JS
  • Elle offre une expérience de lecture moderne ainsi qu’une API pensée pour les développeurs

Fonctionnalités principales

  • Prise en charge des annotations : surlignage, notes autocollantes, texte libre, encre et autres fonctions d’annotation
  • Véritable redaction : lorsque la fonction de redaction est utilisée, le contenu réel du document est supprimé de manière complète, pour des besoins de sécurité
  • Intègre les fonctions essentielles de manipulation PDF comme la recherche, la sélection de texte, le zoom et la rotation
  • Grâce à un défilement fluide et virtualisé, même les documents volumineux peuvent être consultés sans perte de performances
  • Son architecture basée sur des plugins et ses plugins tree-shakable facilitent l’extension tout en éliminant le code inutile

Documentation et démo

  • La documentation officielle, le guide d’installation, la référence API et les exemples sont disponibles sur https://www.embedpdf.com
  • La démo en direct permet d’importer directement des fichiers PDF ou de tester les fonctionnalités avec des documents d’exemple

Open source et licence

  • Sous licence MIT, avec libre utilisation du code source et possibilité de contribuer
  • Inclut PDFium, qui relève de la licence Apache 2.0

Communauté et contribution

  • La participation de la communauté open source et les diverses contributions sont les bienvenues
  • Le guide Contributing et Github Discussions permettent aux développeurs d’échanger

Importance du projet et éléments différenciants

  • En alternative aux visionneuses PDF commerciales existantes, il permet à chacun d’intégrer facilement une fonction de visionneuse PDF dans un outil interne ou un SaaS
  • Sa forte compatibilité avec différents frameworks, ainsi que sa structure moderne et modulaire, constituent ses principaux atouts
  • C’est un exemple rare d’open source proposant des fonctions avancées de traitement PDF comme la redaction

1 commentaires

 
GN⁺ 2025-08-16
Réactions sur Hacker News
  • Le travail réellement important est en fait fait par PDFium ; il est précisé que PDFium est un projet que Google a repris à Foxit puis a continué à développer en interne, et qu’il est actuellement utilisé dans Chrome (ce n’est pas pour dénigrer le travail en cours de discussion, seulement pour signaler qu’il ne s’agit pas d’un parseur PDF entièrement réécrit)
    • Je pense que beaucoup de visionneuses PDF, y compris des produits commerciaux, sont construites sur PDFium
  • Je me demande pourquoi ce projet a été développé alors que Mozilla PDF.js existe déjà https://github.com/mozilla/pdf.js (ce n’est pas une critique, simplement de la curiosité, car il y a de nombreuses raisons de recréer quelque chose qui existe déjà)
    • L’objectif principal était de créer une visionneuse PDF facile à intégrer dans un site web par les développeurs ; PDF.js peut être difficile ou complexe à personnaliser et à étendre dans certains cas d’usage
    • Lorsqu’on a besoin de balisage PDF (annotations, formes, commentaires), les seules options qui viennent à l’esprit sont soit de le construire soi-même, soit de payer un éditeur PDF par abonnement assez coûteux ; j’ai entendu dire que pour les équipes ayant intégré Apryse, le simple coût de prise en charge de l’édition PDF restait déjà très lourd
    • Même à première vue, on voit qu’il y a des fonctionnalités différentes des produits existants, comme les commentaires d’annotation
    • Si vous ouvrez le document de démo sur iPad ou iPhone, vous verrez que la fonction Print Preview ne marche que sur les appareils desktop
    • En voyant les 402 issues ouvertes, on peut imaginer l’énorme complexité du PDF et le travail nécessaire pour gérer toutes ces fonctionnalités
  • J’avais autrefois un side project avec une visionneuse PDF intégrée ; la première version utilisait pdf.js, mais lors d’un zoom rapide ça saccadait et il était difficile de garder le focus, donc je l’ai réimplémentée moi-même avec pdfium en C++ et un rendu Metal, comme on peut le voir dans cette vidéo de démo ; j’ai appliqué une approche par tuiles pour équilibrer mémoire et performances, je ne pensais pas que pdfium serait aussi performant en WebAssembly, et en fait développer l’UI sur le web est plus confortable qu’en C++
    • Honnêtement, la démo paraît bien plus rapide et fluide, l’implémentation du zoom est vraiment très propre ; en voyant ça, j’ai moi aussi envie de m’y remettre pour améliorer les performances
  • J’utilise pdf.js (17 MB, 158 pages, beaucoup d’images, sous Windows) et je partage les problèmes rencontrés pendant mes tests
    • Les liens ne fonctionnent pas
    • Les signets s’affichent mais ne fonctionnent pas
    • Impossible de sélectionner le texte dans Firefox
    • Dans Chrome, le clic molette (utilisé pour le scroll) déclenche une sélection de texte
    • Le scroll est correct dans pdf.js, mais dans ce produit l’écran reste flou pendant plusieurs centaines de millisecondes, voire une seconde, avec une forte dégradation de qualité ; si on saute plusieurs pages avec la touche Fin par exemple, on ne voit qu’un écran blanc
    • Dans FF, les touches haut/bas, Page précédente/Page suivante, Début/Fin ne fonctionnent pas (gauche/droite fonctionnent)
  • J’ai fait un test rapide : dans Firefox, les fonctions d’annotation ne marchaient pas du tout, alors que dans Chrome toutes les annotations, y compris le soulignement et le surlignage, fonctionnaient normalement
    • Message indiquant qu’ils n’avaient pas encore pu tester les annotations dans Firefox, merci pour le signalement ; heureux que cela fonctionne sans problème dans Chrome, ils comptent vérifier cela bientôt
  • Je me demande si l’édition des outlines intégrés (signets) est prise en charge ; c’est toujours la fonctionnalité qui m’a le plus manqué dans les visionneuses/éditeurs PDF, et je ressens ce besoin chaque fois que je reçois un PDF sans outline
  • Sur Linux + Firefox, les outils d’annotation et de caviardage (redaction) ne fonctionnaient pas du tout dans la démo, alors que dans Chromium, sur la même machine, cela marchait bien
    • Le problème rencontré dans Firefox vient d’être corrigé ; désormais, les fonctions d’annotation et de caviardage marchent correctement à la fois sous Linux + Firefox et sous Chromium
  • La documentation est excellente, et j’ai particulièrement aimé le concept de bibliothèque React headless ; on peut facilement y brancher une UI et des fonctionnalités personnalisées ; à quel point est-il difficile de surligner/souligner automatiquement certains termes puis d’afficher un composant personnalisé au clic ou au survol ?
    • C’est très simple à faire, cette fonctionnalité existe déjà ; on peut rendre directement un selectionMenu et des composants personnalisés dans AnnotationLayer, et si vous voulez aller plus loin, merci de poser la question sur le canal Discord
  • Le produit a l’air impressionnant ; ma question est de savoir comment vous comptez pérenniser le développement d’une visionneuse PDF gratuite aussi riche en fonctionnalités : prévoyez-vous des fonctions enterprise, de l’hébergement PDF, ou un autre modèle de monétisation ?
    • Réponse : oui à tout cela ; la visionneuse PDF côté client restera gratuite sous licence MIT, mais des services additionnels comme l’hébergement PDF, l’analytics pour les entreprises et le contrôle d’accès seront proposés en offre payante
  • Dans l’ensemble, cela fonctionne bien, mais en passant l’outil de caviardage (redaction) en mode vue alors que la ligne rouge était encore active, le caviardage restait activé, ce qui empêchait le scroll ; un rafraîchissement résolvait le problème
    • Bon retour, cela sera corrigé bientôt ; sur mobile, la désactivation du scroll en mode redaction est intentionnelle pour faciliter la sélection précise des zones, mais quand on passe à l’onglet vue, le mode redaction devrait toujours être quitté ; merci d’avoir signalé le problème