3 points par GN⁺ 2023-10-25 | 1 commentaires | Partager sur WhatsApp
  • SumatraPDF est un lecteur de documents multiformat pour Windows, prenant en charge les formats PDF, EPUB, MOBI, CBZ, CBR, FB2, CHM, XPS et DjVu
  • La licence est (A)GPLv3, avec certaines parties du code sous licence BSD
  • Plus d'informations sont disponibles sur le Website, le Manual et les Developer Information

1 commentaires

 
GN⁺ 2023-10-25
Avis de Hacker News
  • Comme Adobe pousse plus agressivement la monétisation d’Acrobat, certaines tâches liées aux PDF sont en train d’être remplacées par des outils open source. SumatraPDF fait partie des outils utilisés ; qpdf sert à supprimer les mots de passe, déverrouiller et convertir, et peut être installé sous WSL avec apt-get install qpdf
    On peut supprimer le mot de passe avec qpdf --decrypt --password="" input.pdf output.pdf, et PDF4QT est un éditeur PDF open source pour supprimer, réordonner et extraire des pages, mais il n’a pas encore de release Chocolatey et doit donc être installé manuellement
    Inkscape et LibreOffice Draw servent à modifier des PDF et ajouter du texte ; MuPDF est disponible sous forme d’outils en ligne de commande et de package Python pour le parsing, le remplissage de formulaires et l’ajout de texte ; SumatraPDF sert à la consultation ; et pdfplumber, avec Jupyter Lab, est utile pour extraire des tableaux PDF vers des pipelines de données

    • Firefox permet aussi de consulter des PDF, de les signer et d’y ajouter du texte. Après déverrouillage, on peut aussi supprimer le mot de passe en utilisant Imprimer en PDF
    • PDFTK et pdfjam sont aussi des outils en ligne de commande utiles. PDFTK sert à fusionner des PDF, extraire, supprimer ou dupliquer des pages, et décompresser pour extraire et manipuler du texte et des données à partir des commandes PDF brutes ; pdfjam sert à faire du N-up et à ajuster la taille des pages et les marges
    • Il était dit que qpdf n’était pas dans Chocolatey, mais il est présent dans Scoop, un autre gestionnaire de paquets Windows : https://github.com/ScoopInstaller/Main/blob/master/bucket/qp...
    • Pour l’extraction de tableaux, j’utilise http://tabula.technology/ depuis plusieurs années. Il a bien géré des tableaux assez complexes et je n’ai pas eu de problème particulier
    • En fait, SumatraPDF utilise désormais MuPDF. Il y a toutefois quelques limites pour le rendu des PDF et des livres électroniques, par exemple dans le traitement des formulaires PDF ou l’affichage des caractères Unicode dans les epub
  • Excellent billet rétrospectif écrit par l’auteur de SumatraPDF : https://blog.kowalczyk.info/article/2f72237a4230410a888acbfc...

    • Les quatre phrases de ce billet — « on peut écrire du code complexe et relativement exempt de bugs sans tests », « on peut le faire sans revue de code », « si personne n’utilise l’application, ce n’est pas grave si elle plante », « si elle est beaucoup utilisée, les gens signalent les crashs et on les corrige » — se contredisent
      Le vrai sens est plutôt qu’on peut confier les tests aux utilisateurs, pas que les tests ou les revues de code sont inutiles
      L’auteur teste probablement lui-même son code. Lancer l’application est déjà une forme de test. Mais ce n’est sans doute pas une méthode assez stricte ou systématique pour parler de la sécurité apportée par les tests de régression
      Presque personne ne soutient sérieusement qu’il est impossible d’écrire du code complexe sans tests automatisés. Je suis un fervent partisan des tests automatisés, mais à la fin des années 90 et au début des années 2000, j’ai construit un renderer multiplateforme assez conséquent sans le moindre test automatisé ; cela a pris longtemps, et chaque changement devenait de plus en plus inquiétant
    • Anciens débats HN sur le billet rétrospectif des 15 ans de SumatraPDF : https://news.ycombinator.com/item?id=27968900 - juillet 2021, 133 commentaires
      Discussion lors de la republication du même billet en 2023 : https://news.ycombinator.com/item?id=35065785 - mars 2023, 173 commentaires
    • À la lecture du passage « Gtk est laid, Qt est extrêmement lourd, WxWidgets fonctionne à peine », on dirait que l’auteur n’a pas regardé les toolkits multiplateformes depuis les années 90
    • C’était un article intéressant, et la mention à la fin de l’ajout de fonctionnalités d’édition m’a particulièrement surpris. Cela ressemble à un trou noir aspirant sans fin les demandes de fonctionnalités et l’embonpoint logiciel
  • J’aimerais que tous les développeurs de lecteurs PDF implémentent la fonction d’aperçu de sioyek[0]. Quand on survole un élément de référence croisée, le contenu référencé s’ouvre dans une petite fenêtre de prévisualisation
    Pour lire des manuels et des articles techniques, c’est une fonctionnalité qui change complètement la donne, et on n’insistera jamais assez sur son utilité
    [0] https://github.com/ahrm/sioyek#overview

    • En tant que créateur de SumatraPDF, je connais sioyek et j’envisage de reprendre quelques idées. Elles arriveront peut-être dans la prochaine version
    • Wikipédia fonctionne aussi de manière similaire, mais je suppose que vous le savez déjà. Je me demande ce que je comprends mal
      Et si cette fonctionnalité amenait un lecteur PDF à exécuter du code distant arbitraire, ce serait un risque sérieux, non ?
    • N’est-ce pas la transclusion de Ted Nelson ? C’est-à-dire « le même contenu présent à plus d’un endroit de manière perceptible »
      https://en.m.wikipedia.org/wiki/Transclusion
    • Vraiment génial. J’aimerais reprendre certaines de ces idées dans mon application Kavita
  • Je viens de l’installer pour la première fois, et ses performances écrasent non seulement Adobe Reader, mais même Foxit. Battre Adobe Reader n’a rien d’extraordinaire, mais battre Foxit est assez impressionnant.
    La taille d’installation ne représente aussi qu’environ 10 % de celle de ces programmes. Je me demande ce qu’Adobe peut bien faire pour que son logiciel soit aussi insupportablement lent et pénible à utiliser.

    • Adobe gère probablement la prise en charge à 100 % de la spécification PDF, ainsi que des demandes de fonctionnalités obscures que six entreprises d’un secteur ultra-spécialisé veulent vraiment désespérément.
      Sumatra est excellent et c’est quasiment le seul lecteur PDF que j’utilise sous Windows, mais il n’a qu’environ 10 % des fonctionnalités d’Adobe Acrobat. Cela dit, ces 10 % sont celles dont presque tout le monde a besoin.
    • Ce qui est peut-être encore plus impressionnant, c’est que c’est probablement un projet mené par un seul développeur. SumatraPDF est l’un des exemples emblématiques d’un excellent projet logiciel, et un modèle à viser.
    • Ce que fait Adobe ? Ils traitent peut-être toutes les listes de souhaits de fonctionnalités jamais publiées. Même les commentaires ici disent tous en substance : « Sumatra est bien, mais il lui manque telle ou telle fonctionnalité ».
    • Depuis que Foxit s’est mis à distribuer du spyware avec son logiciel, ce qui m’a refroidi, j’hésite à essayer autre chose.
    • https://old.reddit.com/r/geek/comments/ddh5p/comment/c0zfics...
  • Bénédiction à la personne qui a regardé la spécification PDF et s’est dit : « Sympa, j’aimerais écrire un parseur pour ça ».

    • En tant que créateur de SumatraPDF, pour être juste, je n’ai pas écrit moi-même le rendu PDF. C’est vraiment loin d’être trivial.
      Au début j’utilisais poppler, puis je suis passé à MuPDF. À l’époque, MuPDF était plus actif, et il semble que poppler ait aussi accéléré depuis.
      Le cœur des fonctionnalités PDF n’est pas si mal à implémenter. D’après ce que j’ai vu, les parties mauvaises et complexes sont les ajouts ultérieurs comme le XML, le JavaScript dans les formulaires, les fonctions de graphismes vectoriels complexes comme le masquage vectoriel, la prise en charge de multiples espaces colorimétriques et des séparations CMYK, ainsi que la gestion des polices et le rendu du texte.
      Il est aussi difficile de devoir rendre rapidement des PDF mal formés ; il est facile de rater la création d’un PDF, et les gens les cassent de toutes les manières imaginables. Si Adobe ou Chrome peuvent l’ouvrir, on ne peut pas simplement dire que c’est un « PDF invalide », donc les développeurs de MuPDF ont ajouté beaucoup d’heuristiques pour parvenir à afficher aussi des documents PDF cassés.
    • Même après avoir écrit le parseur lui-même, déterminer concrètement quoi afficher et où reste intéressant. C’est particulièrement vrai pour les documents générés plutôt que faits à la main : pour obtenir la position des éléments, il faut multiplier des matrices, et pour connaître le contenu textuel, il faut encore écrire un parseur pour des tables de points de code très personnalisées.
    • Ce n’est pas une blague. Hier, j’ai découvert qu’un PDF pouvait contenir des formulaires avec du JavaScript.
      https://tcpdf.org/examples/example_014/
      Je n’ai aucune idée de la façon dont ce truc fonctionne.
    • Pour l’avoir fait moi-même, la spécification PDF est, à bien des égards, bien plus sensée et mieux conçue que beaucoup d’« API » créées par les développeurs JavaScript modernes.
      La spécification d’origine est un peu laide, avec par exemple des clés de dictionnaire d’une seule lettre pour économiser des octets dans le format, mais certaines parties sont réellement bien pensées. Les Appearance Streams sont excellents pour la compatibilité ascendante et descendante, et c’est probablement l’une des principales raisons pour lesquelles rien n’a remplacé le PDF.
    • Écrire un parseur pour des fichiers PDF conformes à la spécification n’est peut-être pas si difficile. Bien sûr, écrire un moteur de rendu complet et une interface l’est assurément.
      Mais comme beaucoup de fichiers PDF ne respectent pas la spécification, il faut aussi accepter avec indulgence les fichiers PDF mal formés, comme le fait le parseur d’Adobe.
  • Une grosse mise à jour de SumatraPDF est sortie hier [1]. La liste des travaux en retard [2] contient beaucoup de corrections de bugs et d’améliorations.
    [1] https://github.com/sumatrapdfreader/sumatrapdf/releases/tag/...
    [2] https://github.com/sumatrapdfreader/sumatrapdf/issues/3672

    • Avec les options avancées, je l’utilise comme une sorte de mode sombre, en définissant une couleur de page chaude et un arrière-plan sombre.
      MainWindowBackground = #191919
      FixedPageUI [
      TextColor = #282828
      BackgroundColor = #ebdbb2
      SelectionColor = #2d938f
      ...
      Jusqu’ici, je passais d’un mode à l’autre avec AutoHotkey en écrasant SumatraPDF-settings.txt. J’aimerais partager un petit script, mais il s’est soudainement cassé il y a quelque temps.
    • Le mode sombre et le changement d’onglet au clavier sont d’excellents ajouts au meilleur lecteur PDF léger.
    • Je me demande s’ils ont corrigé les problèmes liés à l’impression. C’est à cause de ça que je finissais toujours par utiliser un autre visualiseur PDF.
  • Comme d’autres l’ont dit, Sumatra fait partie de ces rares utilitaires exclusifs à Windows qui me manquent toujours quand j’utilise un Mac ou Linux. En particulier, il y a deux manipulations simples qui me manquent au quotidien pour consulter des schémas électriques, des plans mécaniques/techniques et des fiches techniques :
    Alt + molette pour zoomer/dézoomer, et clic droit + glisser pour se déplacer. Je me demande s’il existe un visualiseur sur Mac ou Linux qui propose ces deux fonctions. Sur Mac, Skim prend en charge Option + molette et clic gauche + glisser pour se déplacer, mais on ne peut pas les réassigner à une autre touche ou à un autre bouton de souris.

    • Sous Linux, Zathura prend ça en charge. La différence, c’est que le zoom se fait avec Ctrl et non Alt. Le glisser au clic droit sert bien à se déplacer.
      Une fonction que j’adore vraiment, c’est que Page Down va en haut de la page suivante. C’est très pratique quand on veut parcourir rapidement un document avec un niveau de zoom qui ne correspond pas exactement à la taille de la page.
    • J’aime beaucoup Okular. J’apprécie surtout son thème qui permet de lire les PDF avec un fond rouge sombre et du texte jaune. Mais je n’ai pas réussi à le lancer sur un Mac Mini Apple Silicon. La formule brew récente pour Mac semble cassée.
    • Foxit zoome/dézoome avec Ctrl + molette, et se déplace avec clic gauche + glisser. Il tourne sur Mac, et probablement aussi sous Linux.
      Ça me semble suffisamment proche. Si tu veux vraiment aller jusqu’au bout, il doit exister des apps shareware qui font de l’émulation clavier par application et du remappage d’entrées à la volée.
      À ma connaissance, https://www.keyboardmaestro.com/main/ est la solution classique.
    • J’utilise qpdfview et j’en suis très satisfait. Il est très personnalisable.
    • Il me semble qu’avec Karabiner Elements et BetterTouchTool, on pourrait remapper ces entrées uniquement quand Skim est au premier plan.
  • Ce qui est très pratique avec SumatraPDF, c’est qu’il recharge automatiquement les fichiers image ordinaires quand ils sont modifiés. Il est donc facile d’afficher une sortie graphique dans une fenêtre en enregistrant un fichier image.

    • Ce n’est pas seulement vrai pour les images, mais aussi pour les PDF entiers. Dans mon travail, je génère des PDF, et c’est excellent de lancer la commande de mise à jour puis de voir les changements immédiatement dès qu’elle se termine.
    • Le fait de pouvoir envoyer un PDF à l’imprimante choisie depuis la ligne de commande est aussi très pratique. Au moins sous Windows, c’est une killer feature.
  • J’adore vraiment SumatraPDF. Je l’utilise depuis des années, et il est excellent. Quand j’écris du LaTeX dans vim avec le document ouvert à côté dans Sumatra, il se met à jour immédiatement après compilation.
    Le rechargement instantané des pages rend le flux de travail très fluide.

    • Exact. Il faut aussi rendre hommage à lervag. Son plugin vimtex est monstrueux.
      Il y a de fortes chances que ce soit ce que tu utilises. Il s’intègre nativement avec Sumatra, ainsi qu’avec MuPDF, Skim, etc. C’est ce qui est chouette.
    • Evince prend aussi cette fonction en charge. Personnellement, je la considère comme absolument indispensable.
      J’ai utilisé Sumatra brièvement avant de passer à Linux ; il était plutôt bon et réactif.
    • Atril recharge aussi automatiquement.
  • Pendant mon doctorat, quand j’écrivais des manuscrits et des articles, Sumatra PDF était mon outil principal pour voir les changements dans les PDF en temps réel. La version payante d’Acrobat et la version gratuite de Foxit ont plus de fonctionnalités, mais elles verrouillent le fichier en cours de modification.

    • C’est un bon exemple de produit que l’on peut dégrader quand on implémente une restriction inutile sans bien réfléchir à la façon dont elle gênera les utilisateurs. J’espère que les logiciels qui font la même chose sur Android, comme SafetyNet ou les blocages de captures d’écran, deviendront aussi inutiles qu’Acrobat Reader.