Pdf.js: Característica: vista de dos páginas

Creado en 2 oct. 2011  ·  29Comentarios  ·  Fuente: mozilla/pdf.js

Solicitud de función: agregar botones para la vista de dos páginas
Además, sería bueno tener un botón para el 100% y "Ajustar página" en la barra de herramientas.

1-ux 1-viewer 2-feature

Comentario más útil

Puede probarlo usando la compilación de vista previa en http://54.67.70.0 : 8877 / 5e5412c2765c9bd / web / viewer.html.

Increíble, gracias. Para probarlo uno tiene que seleccionar "Grid Scrolling" y disminuir el zoom al 100%. Resultados:

  1. Configuración: la configuración de desplazamiento de cuadrícula y Mostrar barra lateral se recuerda al abrir un nuevo PDF, sin embargo, el nivel de zoom no se recuerda (siempre está predeterminado en zoom automático cuando se abre un nuevo PDF, pero esto también ocurre con pdf.js estándar)
  2. Rendimiento: probado con algunos PDF con mucho texto e imágenes grandes. Parece el mismo rendimiento que el pdf.js estándar, sin embargo el pdf.js estándar es más lento que, por ejemplo, el lector de pdf foxit en muchos casos, porque no se "leen por adelantado" suficientes páginas. Esto significa que la rueda de carga es visible brevemente cuando se desplaza rápidamente. Además, las páginas ya leídas no se "recuerdan" en la RAM. Al desplazarse hacia arriba nuevamente, se muestra la rueda de carga nuevamente. Pero como se dijo, esto parece ser un problema del pdf.js. estándar general.
  3. Compatibilidad: tamaños probados que no son A4, un PDF con diferentes tamaños de página. En un PDF no estándar faltaba una imagen de encabezado, pero esto también sucedió con el pdf.js. estándar.
  4. Técnico: al igual que con mi FF estándar, todo funciona (renderizado de fuentes de subpíxeles, aceleración de hardware ...). También funciona: PDF / A y PDF con acciones de Javascript. No funcionan los PDF con elementos de entrada de texto, pero nuevamente, esto tampoco funciona con el pdf.js estándar ("el PDF contiene datos del formulario. No se admite la edición de foros").
  5. Estrés: probé 50 PDF y algunos de tortura con miles de páginas.

Tal vez lo nombraría de otra manera (por ejemplo, "Vista de varias páginas", pero no soy un hablante nativo. Simplemente no me di cuenta directamente de lo que hace esta configuración).

Conclusión: la versión de desplazamiento de cuadrícula funciona exactamente como el pdf.js. estándar sin cuadrícula. Hay algunos problemas con pdf.js en general que podrían mejorarse, pero nada relacionado con el PR de desplazamiento de la cuadrícula. La versión de desplazamiento de la cuadrícula es absolutamente genial, sería fantástico si la "barra de encabezado" se ocultara automáticamente. En el visor de PDF de Chrome, esta barra solo se muestra durante algunos segundos cuando se mueve el mouse o se toca la pantalla. Aparte de eso, ya estoy pensando cómo usar esta versión de desplazamiento de cuadrícula como mi lector de PDF estándar, hasta que esté disponible en FF estable;)

Todos 29 comentarios

Acerca del 100% y el ajuste de página, eso es algo que hace Adobe Reader y estoy de acuerdo en que sería bueno tenerlo en PDF.js.

En cuanto a la vista de dos páginas, también estoy de acuerdo con eso.

+1

¿Algún trabajo en este sentido en los últimos ~ 4 años?

Dado que todavía hay cierta confusión al respecto, permítanme aclararlo un poco. Ha habido una solicitud de extracción de trabajo en progreso para esto, pero el problema principal era que era _mucho_ código porque el visor no era muy modular en ese momento y no teníamos pruebas de integración para él. Todavía no tenemos pruebas de integración para el visor, por lo que todas las pruebas deben realizarse manualmente. Puede que no lo parezca, pero en realidad es una función difícil de admitir. ¿Qué pasará cuando las páginas sean demasiado anchas? ¿Qué pasará con páginas de diferentes tamaños?

Este problema está abierto por una razón. Todavía lo estamos considerando como una característica útil, pero alguien tiene que encontrar tiempo para trabajar en esto. Si alguien está dispuesto a trabajar en esto, primero tenemos que tener algún tipo de prueba automatizada para el espectador, de lo contrario, el riesgo de regresiones de introducción será grande.

+1

Utilice el botón de reacción +1 de GitHub en lugar de agregar comentarios +1 aquí. El uso del botón de reacción +1 nos permite filtrar los problemas que tienen muchos +1 y, por lo tanto, nos permite priorizar los problemas de una mejor manera.

Okay. Usé el botón de reacción en lugar de comentar. Gracias

Me gustaría esto para poder apoyar la forma en que realmente pienso en los libros. Antes del hipertexto, se criticaba un poco a los libros por ser "lineales", algunas personas incluso abogaban por obtener copias de un libro para poder cortarlas y pegar un póster gigante de todo el libro. Se trataba de un proyecto inicial llamado "Digital Shakespeare", que tenía todas sus obras codificadas en posdata de visualización para que pudieras "volar" sobre su trabajo. Esto es demasiado informe para mí, por lo que mi convención es pensar en conjuntos de diez páginas, agrupadas en 5 pliegos de dos páginas dispuestos como las manchas en las cinco caras de un dado, por ejemplo, así:

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

ahora hay un alto nivel en esto para tomarlos y ponerlos en conjuntos de cientos.

El punto es que podría tener la oportunidad de hacer esto y más con pdf.js, pero necesito una visualización de dos páginas primero.

👍

@timvandermeij Gracias por tu actualización. ¡Yo también espero ver una versión beta de esto funcionando!

¿Qué tengo que hacer para que añadas esta función? ¿QUÉ?

El siguiente paso es ayudar a agregar pruebas de integración automatizadas: # 6505

Es "un buen error para principiantes, ya que no requiere mucho conocimiento de la base de código PDF.js para trabajar. Quizás los colaboradores de otros proyectos de JS tengan experiencia con las pruebas de integración para ayudarnos con esto. El primer paso será elegir y agregar el marco de pruebas de integración ".

¿Hay alguna razón por la que esta función deba implementarse en pdf.js? Implementarlo en una aplicación de lectura basada en pdf.js es trivial y no corre el riesgo de estropear el renderizador. Deje que pdf.js maneje páginas individuales como de costumbre, use dos (o más, si es necesario) elementos de lienzo en cualquier geometría deseada y dispare.

Una demostración simplista no tomó más de unos minutos para escribir, basada en el ejemplo anterior / siguiente de pdf.js:

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

Navegue usando los botones o haciendo clic en las páginas izquierda / derecha ...

@tfer aquí está su visor de 'Modo ridículo': https://jsfiddle.net/Yetangitu/ht04sp3b/

(aumente el factor de escala, visualice en un monitor grande, ¡obtenga ganancias!)

Por lo que puedo ver, no es necesario que pds.js admita el procesamiento de varias páginas, esto se puede manejar adecuadamente en un nivel superior.

@yurydelendik ¿de qué manera es confusa esta solución? Lo estoy usando para construir un visor de PDF para Nextcloud / Owncloud, funciona bien.

image

image

image

¿De qué manera es confusa esta solución?

No cabe en nuestro visor de demostración.

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

@Yetangitu Escribir un visor personalizado con visualización de doble página basado en nuestros ejemplos está perfectamente bien para mí, pero no es un PR que podamos aceptar. ¿Cerramos este problema refiriéndonos que la solución propuesta anteriormente abordaba este problema? De lo contrario, explique / muestre cómo se puede aplicar su código al visor de demostración.

¡No cierres este problema! Se han abierto y cerrado innumerables otros problemas con una solución que no aborda el problema central: PDFjs necesita urgentemente un método incorporado para la vista de 2 páginas. Muchos archivos PDF, como artículos de revistas, manuales, etc., se ven bien en la vista de una página. Pero TODOS LOS LIBROS, desde Gutenberg, están diseñados para ser vistos como diseños LR. Estoy usando PR @Snuffleupagus 's # 3723 en un centro de producción, y al mismo tiempo funciona bien por ahora, que merece ser desarrollado aún más.

@yurydelendik no estaba destinado a ser una solución completa, solo como una pista para aquellas personas que han estado buscando un visor JS PDF con capacidad de propagación durante muchos años. Podría integrarse en el visor de demostración, pero eso requeriría un poco de trabajo. Dado que el visor que estoy construyendo está destinado a verse y actuar (es decir, página horizontalmente, verse como 'como un libro' como sea posible, etc.) como el visor EPUB que hice antes, es bastante diferente del visor de demostración, por lo que no es una simple cuestión de parchear los bits con capacidad de propagación en.

Creo que este tipo de funcionalidad pertenece a una aplicación de visor, no a la biblioteca básica de decodificación / renderización de PDF que es pdf.js, de ahí mi reacción a este problema de pdf.js.

Lanzaré la versión de Reader con capacidad para PDF en unos días para aquellos que quieran probar el concepto. Dado que Reader es una aplicación Nextcloud / Owncloud, necesitará tener una de esas a mano en algún lugar ...

@yurydelendik cuál es el enlace a su visor de EPUB. Sería genial si hubiera una biblioteca JS simple que pudiera incluirse de manera predeterminada para ayudar a que sea más fácil para las personas ver EPUB como ven actualmente los PDF. Quizás este sea un tema nuevo (o un proyecto nuevo).

Es 2018 y esto ha estado flotando durante 7 años. ¡Guau! ¿Alguna actualización / cronograma sobre esto todavía?

La solicitud de extracción sobre su comentario implementa esto. Cualquiera puede ayudarnos a probarlo para asegurarse de que nada se rompa.

Para su información, la aplicación Reader para Nextcloud y Owncloud ahora es compatible con PDF, incluido el modo de 2 páginas (propagación) que mencioné. Se puede encontrar en Github:

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

y en el repositorio de aplicaciones Nextcloud:

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

Pronto aparecerá también en el repositorio de Owncloud.

image

La solicitud de extracción sobre su comentario implementa esto. Cualquiera puede ayudarnos a probarlo para asegurarse de que nada se rompa.

Con ganas de probar, ¿qué necesitas? ¿Hay algún blob binario o software compilado que podamos probar? ¿Por qué no probarlo a través del ciclo maestro beta nocturno?

FYI, la aplicación Reader para Nextcloud y Owncloud ahora es compatible con PDF

Genial, ahora solo necesitamos descubrir cómo ejecutar esto como visor independiente. Sumatra también puede ver 2 páginas, pero no tiene representación de subpíxeles. FF tiene representación de subpíxeles, pero no tiene vista estándar de 2 páginas. Por lo tanto, actualmente no hay un visor de PDF de código abierto utilizable en Windows: /

Puede probarlo usando la compilación de vista previa en http://54.67.70.0 : 8877 / 5e5412c2765c9bd / web / viewer.html. Consulte # 9208 para obtener más información.

Puede probarlo usando la compilación de vista previa en http://54.67.70.0 : 8877 / 5e5412c2765c9bd / web / viewer.html.

Increíble, gracias. Para probarlo uno tiene que seleccionar "Grid Scrolling" y disminuir el zoom al 100%. Resultados:

  1. Configuración: la configuración de desplazamiento de cuadrícula y Mostrar barra lateral se recuerda al abrir un nuevo PDF, sin embargo, el nivel de zoom no se recuerda (siempre está predeterminado en zoom automático cuando se abre un nuevo PDF, pero esto también ocurre con pdf.js estándar)
  2. Rendimiento: probado con algunos PDF con mucho texto e imágenes grandes. Parece el mismo rendimiento que el pdf.js estándar, sin embargo el pdf.js estándar es más lento que, por ejemplo, el lector de pdf foxit en muchos casos, porque no se "leen por adelantado" suficientes páginas. Esto significa que la rueda de carga es visible brevemente cuando se desplaza rápidamente. Además, las páginas ya leídas no se "recuerdan" en la RAM. Al desplazarse hacia arriba nuevamente, se muestra la rueda de carga nuevamente. Pero como se dijo, esto parece ser un problema del pdf.js. estándar general.
  3. Compatibilidad: tamaños probados que no son A4, un PDF con diferentes tamaños de página. En un PDF no estándar faltaba una imagen de encabezado, pero esto también sucedió con el pdf.js. estándar.
  4. Técnico: al igual que con mi FF estándar, todo funciona (renderizado de fuentes de subpíxeles, aceleración de hardware ...). También funciona: PDF / A y PDF con acciones de Javascript. No funcionan los PDF con elementos de entrada de texto, pero nuevamente, esto tampoco funciona con el pdf.js estándar ("el PDF contiene datos del formulario. No se admite la edición de foros").
  5. Estrés: probé 50 PDF y algunos de tortura con miles de páginas.

Tal vez lo nombraría de otra manera (por ejemplo, "Vista de varias páginas", pero no soy un hablante nativo. Simplemente no me di cuenta directamente de lo que hace esta configuración).

Conclusión: la versión de desplazamiento de cuadrícula funciona exactamente como el pdf.js. estándar sin cuadrícula. Hay algunos problemas con pdf.js en general que podrían mejorarse, pero nada relacionado con el PR de desplazamiento de la cuadrícula. La versión de desplazamiento de la cuadrícula es absolutamente genial, sería fantástico si la "barra de encabezado" se ocultara automáticamente. En el visor de PDF de Chrome, esta barra solo se muestra durante algunos segundos cuando se mueve el mouse o se toca la pantalla. Aparte de eso, ya estoy pensando cómo usar esta versión de desplazamiento de cuadrícula como mi lector de PDF estándar, hasta que esté disponible en FF estable;)

Para aquellos que buscan un truco rápido y limpio, simplemente agregue un poco de magia CSS en (viewer.html):

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

Establecer el zoom en alrededor del 75% (= vista de dos páginas en mi pantalla de 1440x900)

¿Hay alguna razón por la que esta función deba implementarse en pdf.js? Implementarlo en una aplicación de lectura basada en pdf.js es trivial y no corre el riesgo de estropear el renderizador.

Sí, estoy de acuerdo, no necesito estar en el código pdf.js ...

Para aquellos que buscan un truco rápido y limpio, simplemente agregue un poco de magia CSS en (viewer.html) ...

Gracias por el trabajo.

En resumen, ¿podría alguien escribir una extensión que inyecte el workaroud de

Gracias

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

AlexP3 picture AlexP3  ·  3Comentarios

liuzhen2008 picture liuzhen2008  ·  4Comentarios

smit-modi picture smit-modi  ·  3Comentarios

patelsumit5192 picture patelsumit5192  ·  3Comentarios

brandonros picture brandonros  ·  3Comentarios