Pdf.js: Fonctionnalité: vue sur deux pages

Créé le 2 oct. 2011  ·  29Commentaires  ·  Source: mozilla/pdf.js

Demande de fonctionnalité: ajouter des boutons pour une vue sur deux pages
aussi, ce serait bien d'avoir un bouton pour 100% et "Page Fit" dans la barre d'outils.

1-ux 1-viewer 2-feature

Commentaire le plus utile

Vous pouvez le tester en utilisant la version d'aperçu à l' adresse http://54.67.70.0 : 8877 / 5e5412c2765c9bd / web / viewer.html.

Incroyable, merci. Pour le tester, il faut sélectionner "Grid Scrolling" et réduire le zoom à 100%. Résultats:

  1. Paramètres: le défilement de la grille et les paramètres d'affichage de la barre latérale sont mémorisés lors de l'ouverture d'un nouveau PDF, mais le niveau de zoom n'est pas mémorisé (il est toujours par défaut le zoom automatique lors de l'ouverture d'un nouveau PDF, mais cela se produit également pour pdf.js standard)
  2. Performance: testé avec certains PDF contenant beaucoup de texte et de grandes images. On dirait la même performance que le pdf.js standard, cependant le pdf.js standard est plus lent que, par exemple, le lecteur de pdf foxit dans de nombreux cas, car il n'y a pas assez de pages "lues à l'avance". Cela signifie que la roue de chargement est brièvement visible lors du défilement rapide. De plus, les pages déjà lues ne sont pas "mémorisées" dans la RAM. Le défilement vers le haut montre à nouveau la roue de chargement. Mais comme dit, cela semble être un problème de la norme générale pdf.js.
  3. Compatibilité: formats non A4 testés, un PDF avec différentes tailles de pages. Sur un PDF non standard, une image d'en-tête manquait, mais cela s'est également produit avec le pdf.js. standard.
  4. Technique: comme avec mon FF standard, tout fonctionne (rendu de police sous-pixel, accélération matérielle ...). Fonctionne également: PDF / A et PDF avec actions Javascript. Les PDF avec des éléments d'entrée de texte ne fonctionnent pas, mais encore une fois, cela ne fonctionne pas non plus avec le pdf.js standard ("le PDF contient des données formulaires. L'édition des forums n'est pas prise en charge").
  5. Stress: testé 50 PDF et certains de torture avec des milliers de pages.

Peut-être que je le nommerais différemment (par exemple "Affichage de plusieurs pages", mais je ne suis pas un locuteur natif. Je ne savais tout simplement pas ce que faisait ce paramètre).

Conclusion: la version à défilement de grille fonctionne exactement comme le pdf.js. standard sans grille. Il y a quelques problèmes avec pdf.js en général qui pourraient être améliorés, mais rien ne concerne le défilement de la grille PR. La version à défilement de la grille est absolument géniale, ce serait juste fantastique si la "barre d'en-tête" se cachait automatiquement. Dans la visionneuse PDF de Chrome, cette barre ne s'affiche que pendant quelques secondes lorsque la souris bouge ou que l'écran est touché. En dehors de cela, je réfléchis déjà à comment utiliser cette version à défilement de grille comme lecteur PDF standard, jusqu'à ce que cela soit disponible dans FF stable;)

Tous les 29 commentaires

À propos du 100% et de la mise en page, c'est quelque chose d'Adobe Reader et je conviens que ce serait bien de l'avoir dans PDF.js.

Quant à la vue sur deux pages, je suis d'accord avec cela également.

+1

Avez-vous travaillé dans ce sens au cours des ~ 4 dernières années?

Puisqu'il y a encore une certaine confusion à ce sujet, permettez-moi de clarifier un peu cela. Il y a eu une demande d'extraction en cours pour cela, mais le principal problème était que c'était _ beaucoup_ de code car le visualiseur n'était pas très modulaire à l'époque et nous n'avions pas de tests d'intégration pour cela. Nous n'avons toujours pas de tests d'intégration pour la visionneuse, donc tous les tests de ceci doivent être effectués manuellement. Cela peut ne pas en avoir l'air, mais c'est en fait une fonctionnalité difficile à prendre en charge. Que se passe-t-il lorsque les pages sont trop larges? Que se passera-t-il avec des pages de tailles différentes?

Ce numéro est ouvert pour une raison. Nous la considérons toujours comme une fonctionnalité utile, mais quelqu'un doit trouver du temps pour y travailler. Si quelqu'un est prêt à travailler là-dessus, nous devons d'abord avoir une forme de test automatisé pour le spectateur, sinon le risque de régressions d'introduction sera grand.

+1

Veuillez utiliser le bouton de réaction +1 de GitHub au lieu d'ajouter +1 commentaires ici. L'utilisation du bouton de réaction +1 nous permet de filtrer les problèmes qui ont de nombreux +1 et nous permet ainsi de mieux hiérarchiser les problèmes.

D'accord. J'ai utilisé le bouton de réaction au lieu de commentaire. Merci

J'aimerais cela pour pouvoir soutenir la façon dont je pense réellement aux livres. Avant l'hypertexte, il y avait un peu de raillerie pour les livres parce qu'ils étaient «linéaires», certaines personnes recommandaient même d'obtenir des copies d'un livre pour pouvoir les découper et coller une affiche géante du livre entier. Il s'agissait d'un premier projet appelé "Digital Shakespeare", qui avait toutes ses pièces encodées en post-scriptum d'affichage afin que vous puissiez "survoler" son travail. C'est un peu trop informel pour moi, donc ma convention est de penser à des ensembles de dix pages, regroupés en 5 doubles pages disposées comme les taches sur les cinq faces d'un dé, par exemple:

[0 | 1] [2 | 3]
«[4 | 5]
[6 | 7] [8 | 9]

maintenant, il y a un niveau élevé à cela pour les prendre et les mettre par centaines.

Le fait est que j'aurai peut-être une chance de faire cela et plus encore avec pdf.js, mais je dois d'abord afficher deux pages.

👍

@timvandermeij Merci pour votre mise à jour. J'espère aussi beaucoup voir une version bêta de ce travail!

Que dois-je faire pour que vous ajoutiez cette fonctionnalité? QUOI?

La prochaine étape consiste à ajouter des tests d'intégration automatisés: # 6505

C'est "un bon bogue pour les débutants car cela ne nécessite pas beaucoup de connaissances de la base de code PDF.js pour travailler. Peut-être que les contributeurs d'autres projets JS ont l'expérience des tests d'intégration pour nous aider. La première étape sera de choisir et d'ajouter le cadre de test d'intégration. "

Y a-t-il une raison pour laquelle cette fonctionnalité devrait être implémentée dans pdf.js lui-même? L'implémenter dans une application de lecture basée sur pdf.js est trivial et ne risque pas de gâcher le moteur de rendu. Laissez pdf.js gérer les pages uniques comme il est utilisé, utilisez deux éléments de canevas (ou plus, si nécessaire) dans la géométrie souhaitée et déclenchez.

Une démo simpliste n'a pas pris plus de quelques minutes à écrire, basée sur l'exemple précédent / suivant de pdf.js:

https://jsfiddle.net/Yetangitu/1egqfefu/4/

Naviguez à l'aide des boutons ou en cliquant sur les pages gauche / droite ...

@tfer voici votre visionneuse 'Ludicrous mode': https://jsfiddle.net/Yetangitu/ht04sp3b/

(augmenter le facteur d'échelle, afficher sur un grand écran, profit!)

Pour autant que je puisse voir, il n'est pas nécessaire que pds.js prenne en charge le rendu multi-page, cela peut être géré de manière adéquate à un niveau supérieur.

@yurydelendik en quoi cette solution est-elle déroutante? Je l'utilise pour créer une visionneuse PDF pour Nextcloud / Owncloud, cela fonctionne bien.

image

image

image

en quoi cette solution prête-t-elle à confusion?

Il ne rentre pas dans notre visionneuse de démonstration.

https://jsfiddle.net/Yetangitu/1egqfefu/4/

@Yetangitu Écrire une visionneuse personnalisée avec un affichage double page basé sur nos exemples me convient parfaitement, mais ce n'est pas un PR que nous pouvons accepter. Pouvons-nous clore ce problème en indiquant que la solution proposée ci-dessus répondait à ce problème? Sinon, veuillez expliquer / montrer comment votre code peut être appliqué à la visionneuse de démonstration.

Veuillez ne pas fermer ce problème! D'innombrables autres problèmes ont été ouverts et fermés avec une solution qui ne résout pas le problème central: PDFjs a grandement besoin d'une méthode intégrée pour la vue sur 2 pages. De nombreux fichiers PDF, tels que des articles de revues, des manuels, etc. ont l'air bien en vue d'une page. Mais TOUS LES LIVRES, depuis Gutenberg, sont conçus pour être considérés comme des mises en page LR. J'utilise le PR # 3723 de @Snuffleupagus sur un site de production, et bien que cela fonctionne bien pour le moment, il mérite d'être développé davantage.

@yurydelendik, ce n'était pas censé être une solution complète, juste comme un indice pour ceux qui recherchent depuis de nombreuses années une visionneuse JS PDF compatible avec la diffusion. Il pourrait être intégré à la visionneuse de démonstration, mais cela prendrait un peu de travail. Puisque la visionneuse que je construis est censée ressembler et agir (c.-à-d. Page horizontalement, ressembler à un livre comme faisable, etc.) comme la visionneuse EPUB que j'ai créée plus tôt, elle est assez différente de la visionneuse de démonstration, donc ce n'est pas une simple question de patcher les bits capables de propagation dans.

Je pense que ce type de fonctionnalité appartient à une application de visualisation, pas à la bibliothèque de décodage / rendu PDF de base qui est pdf.js, d'où ma réaction à ce problème pdf.js.

Je sortirai la version PDF de Reader dans quelques jours pour ceux qui veulent essayer le concept. Puisque Reader est une application Nextcloud / Owncloud, vous devrez en avoir une à portée de main quelque part ...

@yurydelendik quel est le lien vers votre visionneuse EPUB. Ce serait formidable s'il y avait une bibliothèque JS simple qui pourrait être incluse par défaut pour aider les gens à afficher plus facilement EPUB comme ils visualisent actuellement les PDF. C'est peut-être un nouveau problème (ou un nouveau projet).

Nous sommes en 2018 et cela flotte depuis 7 ans maintenant. Whoa! Des mises à jour / échéanciers à ce sujet?

La demande d'extraction au-dessus de votre commentaire implémente cela. Tout le monde est invité à nous aider à le tester pour s'assurer que rien ne casse.

Pour info, l'application Reader pour Nextcloud & Owncloud prend désormais en charge le format PDF, y compris le mode 2 pages (propagation) que j'ai mentionné. Il peut être trouvé sur Github:

https://github.com/Yetangitu/owncloud-apps/tree/master/files_reader

et dans le référentiel d'applications Nextcloud:

https://apps.nextcloud.com/apps/files_reader

Il apparaîtra également bientôt dans le repo Owncloud.

image

La demande d'extraction au-dessus de votre commentaire implémente cela. Tout le monde est invité à nous aider à le tester pour s'assurer que rien ne casse.

Envie de tester, de quoi avez-vous besoin? Existe-t-il un blob binaire ou un logiciel compilé que nous pouvons tester? Pourquoi ne pas le tester via un cycle principal bêta nocturne?

FYI, l'application Reader pour Nextcloud et Owncloud prend désormais en charge le PDF

Cool, il ne nous reste plus qu'à trouver comment l'exécuter en tant que visionneuse autonome. Sumatra est également capable d'afficher 2 pages, mais il n'a pas de rendu de sous-pixels. FF a un rendu de sous-pixels, mais pas de vue standard de 2 pages. Donc, actuellement, il n'y a pas de visionneuse PDF open source utilisable sous Windows: /

Vous pouvez le tester en utilisant la version d'aperçu à l' adresse http://54.67.70.0 : 8877 / 5e5412c2765c9bd / web / viewer.html. Référez-vous à # 9208 pour plus d'informations.

Vous pouvez le tester en utilisant la version d'aperçu à l' adresse http://54.67.70.0 : 8877 / 5e5412c2765c9bd / web / viewer.html.

Incroyable, merci. Pour le tester, il faut sélectionner "Grid Scrolling" et réduire le zoom à 100%. Résultats:

  1. Paramètres: le défilement de la grille et les paramètres d'affichage de la barre latérale sont mémorisés lors de l'ouverture d'un nouveau PDF, mais le niveau de zoom n'est pas mémorisé (il est toujours par défaut le zoom automatique lors de l'ouverture d'un nouveau PDF, mais cela se produit également pour pdf.js standard)
  2. Performance: testé avec certains PDF contenant beaucoup de texte et de grandes images. On dirait la même performance que le pdf.js standard, cependant le pdf.js standard est plus lent que, par exemple, le lecteur de pdf foxit dans de nombreux cas, car il n'y a pas assez de pages "lues à l'avance". Cela signifie que la roue de chargement est brièvement visible lors du défilement rapide. De plus, les pages déjà lues ne sont pas "mémorisées" dans la RAM. Le défilement vers le haut montre à nouveau la roue de chargement. Mais comme dit, cela semble être un problème de la norme générale pdf.js.
  3. Compatibilité: formats non A4 testés, un PDF avec différentes tailles de pages. Sur un PDF non standard, une image d'en-tête manquait, mais cela s'est également produit avec le pdf.js. standard.
  4. Technique: comme avec mon FF standard, tout fonctionne (rendu de police sous-pixel, accélération matérielle ...). Fonctionne également: PDF / A et PDF avec actions Javascript. Les PDF avec des éléments d'entrée de texte ne fonctionnent pas, mais encore une fois, cela ne fonctionne pas non plus avec le pdf.js standard ("le PDF contient des données formulaires. L'édition des forums n'est pas prise en charge").
  5. Stress: testé 50 PDF et certains de torture avec des milliers de pages.

Peut-être que je le nommerais différemment (par exemple "Affichage de plusieurs pages", mais je ne suis pas un locuteur natif. Je ne savais tout simplement pas ce que faisait ce paramètre).

Conclusion: la version à défilement de grille fonctionne exactement comme le pdf.js. standard sans grille. Il y a quelques problèmes avec pdf.js en général qui pourraient être améliorés, mais rien ne concerne le défilement de la grille PR. La version à défilement de la grille est absolument géniale, ce serait juste fantastique si la "barre d'en-tête" se cachait automatiquement. Dans la visionneuse PDF de Chrome, cette barre ne s'affiche que pendant quelques secondes lorsque la souris bouge ou que l'écran est touché. En dehors de cela, je réfléchis déjà à comment utiliser cette version à défilement de grille comme lecteur PDF standard, jusqu'à ce que cela soit disponible dans FF stable;)

Pour ceux qui recherchent un hack de nettoyage rapide, ajoutez simplement de la magie CSS sur (viewer.html):

<style>
#viewer {
  margin-left:20px;
}
div.page {
  float:left;
}
</style>

Réglez le zoom à environ 75% (= vue de deux pages sur mon écran 1440x900)

Y a-t-il une raison pour laquelle cette fonctionnalité devrait être implémentée dans pdf.js lui-même? L'implémenter dans une application de lecture basée sur pdf.js est trivial et ne risque pas de gâcher le moteur de rendu.

Oui, je suis d'accord, je n'ai pas besoin d'être dans le code pdf.js ...

Pour ceux qui recherchent un hack de nettoyage rapide, ajoutez simplement de la magie CSS sur (viewer.html) ...

Merci pour le travail.

En résumé, quelqu'un pourrait-il écrire une extension qui injecte le workaroud de

Merci

Cette page vous a été utile?
0 / 5 - 0 notes