Pdf.js: La impresión es borrosa / borrosa

Creado en 20 feb. 2013  ·  38Comentarios  ·  Fuente: mozilla/pdf.js

si imprimo un pdf con FF19 y la nueva función de pdf, la impresión es borrosa.

si imprimo con acrobat, la fuente es clara.

izquierda = acróbata
derecha = ff pdf

¿Tienes una idea?

https://plus.google.com/105533044232180103026/posts/dYL855pBkSM

3-upstream 4-printing

Comentario más útil

Desde https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0, ahora hay una función renderPage en web/viewer.js y la resolución de impresión está codificada allí como 150 DPI.

function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size) {
  var scratchCanvas = activeService.scratchCanvas;
  var PRINT_RESOLUTION = 150;
  var PRINT_UNITS = PRINT_RESOLUTION / 72.0;

Para cambiar la resolución de impresión a 300 DPI, simplemente cambie la línea a continuación.

var PRINT_RESOLUTION = 300;

De acuerdo con las etiquetas de lanzamiento, todas las versiones de PDF.js desde 1.7.xa 1.10.x deberían tener esa capacidad ahora. Me sorprende que esto no esté documentado en ninguna parte.

Idealmente, debería existir la posibilidad de cambiar la resolución de impresión de los parámetros de consulta en lugar de modificar web/viewer.js .

Consulte Cómo aumentar la calidad de impresión de un archivo PDF con el visor PDF.js para obtener más detalles.

Todos 38 comentarios

Supongo que es porque la salida de pdf.js es un lienzo (un lienzo por página, para ser exactos), que probablemente no coincide al 100% con la resolución de la impresora.

Esto también me pasa a mí.

DSCF8966

  • arriba = PDF.js incorporado en Firefox
  • abajo = Adobe Acrobat

La calidad de impresión es simplemente inaceptable.
Además, el archivo PDF.js incorporado genera un borde negro en los lados derecho e inferior, como si se tratara de fotocopiar una hoja de menor tamaño.

¿Alguna solución? Estoy en una línea directa y tengo 200 usuarios con este problema.

@BadFriend , @musiphil , ¿qué sistema operativo

El mismo problema aquí en FFox 19 en WinXP a la impresora PostScript. Las líneas horizontales finas están difuminadas, mientras que las líneas verticales son finas. Los encabezados y pies de página también están bien.

Estoy ejecutando Firefox 19.0 en Windows 7 e imprimí esos documentos en una impresora HP Color LaserJet CP4525 con PCL6.

FF19 + Win7 64bit + OKI561 a través de PCL6 en el puerto WSD o Adobe PDF (Adobe Acrobat 9.2.0)

IMG_20130222_074757

izquierda: Complemento de Chrome
medio: Adobe Reader
derecha: Firefox pdf.js

Descargar PDF -> http://www.file-upload.net/download-7241349/offers-36.pdf.html

Vea también # 2771. Citando a @brendandahl :

La baja calidad se rastrea en https://bugzilla.mozilla.org/show_bug.cgi?id=811002 .

Se corrigió el error de aguas arriba. ¿Sigue siendo un problema con las últimas versiones de Firefox y PDF.js?

Se corrigió el error de aguas arriba. ¿Sigue siendo un problema con las últimas versiones de Firefox y PDF.js?

Creo que solo se solucionó para Windows. Hay un nuevo error para OSX (error 932313) pero no estoy convencido de que sea válido (vea mi comentario en https://bugzilla.mozilla.org/show_bug.cgi?id=932313#c2).

Hasta que no se solucione el problema en Linux, voto por mantener abierto este error.

¿Esta arreglado?
Esta página de demostración se imprime correctamente desde Firefox
http://mozilla.github.io/pdf.js/web/viewer.html
https://dl.dropboxusercontent.com/u/1383480/work/printing/2015-02-16%2011.29.52.jpg

del resultado de impresión de Chrome y Chromium es TAN borroso, no puedo encontrar palabras para describirlo
https://dl.dropboxusercontent.com/u/1383480/work/printing/2015-02-16%2011.29.58.jpg
Intenté establecer ppp para la impresora y PRINT_SCALE RATIO en 1, 3, 4, 8, sin efecto
Probé la última versión de github (8614c17) - lo mismo
(entorno: Chrome, Chromium, windows 7)

¿Me estoy perdiendo de algo?
¿Podría revisar esto y posiblemente sugerir una solución rápida?

@ jonny64 ¡ gracias por informar de esto! Desafortunadamente, supongo que no hay mucho que se pueda hacer por Chrome / Chromium aquí. La mejor calidad de impresión en Firefox se obtiene mediante el uso de una API especial para imprimir que está disponible en Firefox pero no en Chrome. En el pasado propuse la API como estándar pero no hubo mucho interés y, por lo tanto, todavía solo está disponible en Firefox.

:) @jviereck , bueno, ok, debería vivir con eso
Probé el visor interno de Chrome
Se imprime bien, pero es 'Guardar' rompe el modo kiosco
(necesitamos imprimir con vista previa de Chrome en modo de pantalla completa de kiosco)

Afortunadamente, tengo algunos antecedentes con C hace algún tiempo
https://pdfium.googlesource.com/pdfium.git
¿Es la fuente correcta para el visor interno de Chrome?
¿Es mejor ocultar 'Guardar' de la configuración de Chrome o cuando la línea de comando --kiosk está configurada?
¿Tiene alguna idea de alto nivel sobre dónde y cómo puedo implementarla?

Esto sigue siendo un error en OS X y la última edición para desarrolladores de Firefox, por lo que puedo decir, al menos en algunas circunstancias.

Cómo reproducir sin impresora:

  • Haga clic en "Imprimir" en el visor de PDF.js.
  • Haga clic en el botón "PDF".
  • Elija "Guardar como PostScript ..." ( no "Guardar como PDF ...")
  • Abra el archivo .ps guardado en Preview.app.

El texto no es seleccionable y, al acercarlo, el texto está bastante pixelado. El texto se ve muy bien si elige "Guardar como PDF ..."

Intenté aumentar la resolución predeterminada en
web / app.js :: beforePrint
<< var pageSize = this.pdfViewer.getPageView (0) .pdfPage.getViewport (1);

var pageSize = this.pdfViewer.getPageView (0) .pdfPage.getViewport (2);

y web / pdf_page_view.js :: beforePrint
<< var viewport = pdfPage.getViewport (1);

var viewport = pdfPage.getViewport (2);

La impresión es más lenta pero la calidad ha mejorado

Algunas mejoras después de # 7677

¿Ha habido alguna actualización de este problema en los últimos 4 meses? Esto todavía se nota en la última versión de pdf.js. Recientemente implementé una implementación usando pdf.js y ahora tengo documentos que se imprimen con letras borrosas que no eran un problema con el lector de PDF nativo de Chrome.

Puede reproducir este problema imprimiendo desde la propia página de demostración de Mozilla. Sé que no es un problema de controladores porque también ocurre cuando imprime en un PDF.

Parece que algunas personas que utilizan pdf.js en producción han tenido que omitir pdf.js por completo para solucionar este problema ( ejemplo ).

Actualmente, la impresión de mayor calidad no es posible sin aumentar en gran medida el uso de la memoria, lo que la mayoría de los navegadores no tomarán bien. El back-end de lienzo no puede proporcionar dicha funcionalidad. Hay un proyecto abierto (https://github.com/mozilla/pdf.js/projects) para investigar utilizando el prototipo de back-end SVG para una impresión de alta calidad.

He descubierto que PDF.js ha tenido una calidad de impresión aceptable y una calidad de impresión difusa según la versión de Firefox instalada, por lo que me gustaría ver qué ha cambiado entre las versiones desde las que pude imprimir. Tengo https://imgur.com/7Beh7MO , que es el resultado de una impresión directa de izquierda a derecha de Firefox 52, 47.0.2 y 42, y las dos primeras al menos son actualizaciones nuevas. Como se muestra, algo cambió en PDF.js entre las versiones FF 47.0.2 y FF 52 que parece haber arruinado la calidad, por lo que si alguien tiene información sobre qué marcadores mirar para comenzar para esas versiones de Firefox, no lo haría ' No le importa echar un vistazo para empezar.

Mirando las versiones del repositorio de Firefox de PDF.js, veo que 47.0.2 era la versión 1.4.121, que corresponde a la confirmación 51f6aba (podría ser la confirmación posterior, que es be1e12d) y que Firefox 52 se envió con PDF.js 1.6. 315, que es aproximadamente la confirmación c23f124. Actualmente estoy buscando diferenciar estas confirmaciones, pero la diferencia entre ellas es probablemente de 400 confirmaciones y cualquier información sobre dónde se encuentra la impresión sería muy útil.

Como se muestra, algo cambió en PDF.js entre las versiones FF 47.0.2 y FF 52 que parece haber arruinado la calidad,

Si bien es ciertamente posible que un cambio en PDF.js sea el responsable, no descartaría (al menos inicialmente) por completo la posibilidad de que el problema pudiera estar relacionado, por ejemplo, con gráficos / código de impresión en otras partes de Firefox.
Puede ser útil, y quizás incluso más rápido, usar http://mozilla.github.io/mozregression/ para intentar encontrar un rango de regresión.

¿El botón de impresión dentro de PDF.js incluso usa Firefox para imprimir? Mi
suposición basada en el hecho de que el complemento está disponible en otros navegadores
es que no habría problemas relacionados con la forma en que el navegador subyacente
maneja la impresión. Esto también es compatible con el diálogo de procesamiento de impresión.
enumerar la representación de PDF.js como una tarea para enviar los datos a la impresora. voy a
haga algunas pruebas adicionales e intente ejecutar PDF.js como complemento y pruebe
diferentes versiones de posibles para ver si eso cambia algo.

El 14 de marzo de 2017 a las 9:58 a. M., "Jonas Jenwald" [email protected] escribió:

Como se muestra, algo cambió en PDF.js entre las versiones FF 47.0.2 y FF 52
que parece haber arruinado la calidad,

Aunque ciertamente es posible que un cambio en PDF.js sea responsable, yo
no descartaría (al menos inicialmente) por completo la posibilidad de que el
El problema podría estar relacionado con, por ejemplo, gráficos / códigos de impresión en otras partes de
Firefox.
Puede ser útil, y quizás incluso más rápido, usar
http://mozilla.github.io/mozregression/ para intentar encontrar una regresión
distancia.

-
Estás recibiendo esto porque hiciste un comentario.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/mozilla/pdf.js/issues/2750#issuecomment-286428765 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AOZHcyFJnLjI8MhAXspe-SIikmMA7YWOks5rlpzwgaJpZM4AcblL
.

-
Haga clic para leer los avisos:
http://www.mediweightlossclinics.com/sig/ Comunicación confidencial
http://www.mediweightlossclinics.com/sig/ Descargo de responsabilidad sobre propósitos educativos
http://www.mediweightlossclinics.com/sig/ Declaración de divulgación de franquicia

Anteriormente, usábamos el mozPrintCallback específico de Mozilla siempre que podíamos si era compatible, es decir, en versiones complementarias y no complementarias en el navegador Firefox, ya que presumiblemente nos permitía imprimir con menos memoria. consumo y mayor calidad. Sin embargo, intentamos reducir el uso de eso porque es específico de Firefox y, a veces, tiene errores, por lo que ahora solo lo usamos en el complemento de Firefox (https://github.com/mozilla/pdf.js/blob/master/ web / firefox_print_service.js).

En general, ahora renderizamos los lienzos y los imprimimos utilizando la lógica de impresión normal definida por el navegador, por lo que creo que el problema puede estar en el cambio de escala del lienzo / código de representación de la fuente o en un error del navegador.

Consulte https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0 para conocer la mayor parte de ese cambio. Es posible que desee verificar si hay una diferencia en la calidad de impresión de Firefox con y sin el complemento.

Desde https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0, ahora hay una función renderPage en web/viewer.js y la resolución de impresión está codificada allí como 150 DPI.

function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size) {
  var scratchCanvas = activeService.scratchCanvas;
  var PRINT_RESOLUTION = 150;
  var PRINT_UNITS = PRINT_RESOLUTION / 72.0;

Para cambiar la resolución de impresión a 300 DPI, simplemente cambie la línea a continuación.

var PRINT_RESOLUTION = 300;

De acuerdo con las etiquetas de lanzamiento, todas las versiones de PDF.js desde 1.7.xa 1.10.x deberían tener esa capacidad ahora. Me sorprende que esto no esté documentado en ninguna parte.

Idealmente, debería existir la posibilidad de cambiar la resolución de impresión de los parámetros de consulta en lugar de modificar web/viewer.js .

Consulte Cómo aumentar la calidad de impresión de un archivo PDF con el visor PDF.js para obtener más detalles.

Si la solución de about: config.

¿Podría parametrizarse esto?

Intenté aumentar la resolución predeterminada en
web / app.js :: beforePrint
<< var pageSize = this.pdfViewer.getPageView (0) .pdfPage.getViewport (1);

var pageSize = this.pdfViewer.getPageView (0) .pdfPage.getViewport (2);

y web / pdf_page_view.js :: beforePrint
<< var viewport = pdfPage.getViewport (1);

var viewport = pdfPage.getViewport (2);

La impresión es más lenta pero la calidad ha mejorado

¡funciona!

El visor genérico ahora expone la opción de aplicación printResolution gracias a # 10854, por lo que el visor prediseñado ya no tiene que modificarse para esto. Tenga en cuenta que aumentar la resolución de impresión, al tiempo que mejora la calidad de impresión, puede hacer que la impresión sea más lenta y / o que el navegador tenga menos capacidad de respuesta, pero ahora esto es una compensación que los usuarios del visor pueden hacer ellos mismos.

@timvandermeij ¡ Gracias por la actualización! Para aclarar, ¿estás hablando de "usuarios" como en "usuarios de la biblioteca pdf.js", o como en "usuarios de Firefox"? Caigo en la última categoría (y creo que este error está relacionado con los usuarios de Firefox) y estoy tratando de averiguar si esas AppOptions están expuestas en Firefox de alguna manera.

Actualización: Creo que @timvandermeij se refiere a "usuarios de la biblioteca pdf.js". También creo que las AppOptions están expuestas en Firefox a través de about: config , pero no automáticamente (es decir, alguien probablemente tenga que modificar el código de Firefox para habilitarlo), ya que la mayoría, pero no todas las AppOptions, existen allí. pdfjs.cursorToolOnLoad está en about: config , pero no defaultUrl ni disableHistory , presumiblemente porque no tienen sentido en el contexto de Firefox.

@raztus Sí, me refiero a los usuarios de la biblioteca. Las compilaciones de Firefox se dejaron fuera de ese alcance (https://github.com/mozilla/pdf.js/pull/10854#discussion_r287325125) porque no es fácil saber qué sucede con, por ejemplo, la capacidad de respuesta del navegador y el uso de la memoria si aumenta este valor . Si recibimos más comentarios sobre eso, no estoy en contra de considerar hacer que la preferencia esté disponible también para las compilaciones de Firefox (mozcentral).

@timvandermeij Gracias y @ kleins05 por esta mejora. He actualizado mi publicación con respecto a esta función.

¿Estoy en lo cierto al suponer que con esta actualización la resolución de impresión se puede configurar usando el código a continuación?

document.addEventListener('webviewerloaded', function() { PDFViewerApplicationOptions.set('printResolution', 300); });

Sí, creo que tienes razón. El evento webviewerloaded es de hecho el evento correcto para escuchar para configurar las opciones de la aplicación; ver:
https://github.com/mozilla/pdf.js/blob/c91f437eaaff79b660805e020f4fa9d4a2a7fe65/web/viewer.js#L208 -L210
Después de ese punto, PDFViewerApplicationOptions siempre debería estar disponible. No he probado este fragmento en particular, pero desde la inspección se ve bien y puede probarlo revisando el último código de sucursal master , agregando ese fragmento y verificando si la calidad de impresión mejora.

@raztus Sí, me refiero a los usuarios de la biblioteca. Las compilaciones de Firefox se dejaron fuera de ese alcance ( # 10854 (comentario) ) porque no es fácil saber qué sucede, por ejemplo, con la capacidad de respuesta del navegador y el uso de la memoria si aumenta este valor. Si recibimos más comentarios sobre eso, no estoy en contra de considerar hacer que la preferencia esté disponible también para las compilaciones de Firefox (mozcentral).

@timvandermeij Me encantaría ayudar a proporcionar algunos de esos comentarios. Después de todo, about: config ya es un área de anulación de garantía;) ¿Cómo puedo contribuir? ¿Necesitaría construir Firefox desde cero para cambiar printResolution ?

Puede experimentar con esto abriendo el visor predeterminado (ya sea https://mozilla.github.io/pdf.js/web/viewer.html que siempre ejecuta el código de sucursal master más reciente o un pago personalizado) , abriendo la consola web e ingresando PDFViewerApplicationOptions.set('printResolution', 300); . Eso establecerá la resolución de impresión en 300 DPI en lugar de los 150 DPI predeterminados. Si luego hace clic en el botón de impresión, notará una diferencia en la calidad de impresión, pero también en el tiempo que lleva procesar las páginas y el consumo de memoria (lo intenté yo mismo para asegurarme de que estos pasos funcionan). La pregunta principal es cómo se relaciona la resolución de impresión en DPI con el uso de memoria / tiempo de renderizado para varios tipos de archivos PDF, como tamaño pequeño / mediano / grande, pero también documentos de solo texto o imágenes pesadas. Si sabemos más sobre cómo se comporta en varios escenarios de la vida real, es posible que también podamos introducir la configuración para las compilaciones de Firefox y / o actualizar el valor predeterminado.

Probé el método anterior, pero no estoy definido.
Esto es con Chrome Canary versión 77.0.3818.0 (compilación oficial) canary (64 bits)

Sí, ejecutar eso dará undefined porque configurar una opción no tiene valor de retorno, pero si luego imprime nuevamente, habrá aumentado la calidad de salida de impresión.

Gracias.
¿Por qué no está disponible como una opción configurable por el usuario, sino solo como una opción configurable mediante programación?

Esto se explica en los comentarios anteriores, en particular https://github.com/mozilla/pdf.js/issues/2750#issuecomment -496697032. Primero queremos experimentar con él antes de hacerlo más accesible. Tenga en cuenta que hace apenas un día se fusionó el PR # 10879 debería ayudar un poco con el problema del uso de la memoria, y ahora que esto es al menos programable, podemos experimentar más fácilmente e incluir mejoras.

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