2012-01-17 21 views
5

Estoy construyendo una impresora de etiquetas. Consiste en un logotipo y algo de texto, no es difícil. Ya llevo 3 días intentando que el logotipo SVG original dibuje en la pantalla, pero el SVG es demasiado complejo, usa demasiados degradados, etc.¿Cómo puedo mejorar la calidad de imagen de ReportLab?

Tengo un logotipo de mapa de bits de alta calidad (como JPG o PNG) y estoy dibujando eso en un lienzo de ReportLab. La imagen en cuestión es mucho más grande que 85 * 123px. Lo hice con la esperanza de que ReportLab incrustara todo y escalara en consecuencia. Así es como lo estoy haciendo:

canvas.drawImage('logo.jpg', 22+xoffset, 460, 85, 123) 

El problema es que mi suposición era incorrecta. Parece que se reduce a 85 * 123 píxeles a la resolución de pantalla y eso significa que cuando se imprime, no se ve muy bien.

¿ReportLab tiene algún comando DPI para lienzos o documentos para que pueda mantener la calidad?

Respuesta

1

Una de las opciones que pensé al escribir la pregunta es: aumente el tamaño del PDF y deje que la impresora lo solucione.

Si multiplicara todos mis números por 5 y la impresora lograra resolver las cosas, tendría cerca de 350DPI ... Pero estoy asumiendo bastante.

8

Al haber trabajado previamente en la empresa ReportLab, puedo decir que las imágenes de trama no pasan por un remuestreo/reducción de escala automáticos mientras se incluyen en el PDF. Las dimensiones 85 * 123 que está utilizando no son píxeles, sino puntos (pt) que son unidades físicas como milímetros o pulgadas.

Le sugiero que imprima el PDF con diferentes imágenes de calidad para confirmar esto o acercarlo muy, muy lejos usando su visor de PDF. Siempre se verá algo borroso en un visor de PDF ya que la imagen se muestrea dos veces (una vez en el software de imágenes y luego otra vez en los píxeles disponibles para el visor de PDF).

Esto es cómo iba a calcular qué tamaño en píxeles para hacer una imagen de trama para que se imprime bien en un tamaño físico dado:

Supongamos que quiero que la foto sea de 2 pulgadas de ancho, hay 72 puntos en una pulgada así que el ancho en mi código sería 144. Sé que una buena resolución nítida para imprimir es de 300 ppp (puntos por pulgada), por lo que la imagen ráster se guarda a 600px de ancho.

Cuestiones relacionadas