2011-08-10 10 views
5

En mi aplicación estoy usando un QTextEdit para mostrar texto, usando HTML para formatear. El documento mostrado se puede imprimir. Y aquí está el problema: mientras que en la pantalla el kerning es correcto, cuando se imprime el documento tiene un aspecto muy malo (principalmente: demasiado espacio después de algunas letras).Qt kerning issue

Tratando de comprender el problema, publico el HTML en un archivo externo y lo compruebo en navegadores reales. En Chrome existe exactamente el mismo problema, mientras que en Firefox, el kerning también es correcto para la impresión. El problema proviene definitivamente del motor de renderizado HTML, pero no estoy usando el módulo QtWebkit (ni siquiera lo he compilado), lo que explicaría que el mismo problema ocurra en Chrome.

¿Cómo puedo solucionar esto?

EDITAR

es lo que parece aquí como:

En primer lugar el texto tal como se dictarán (Firefox): kerning with Firefox

Entonces lo que se rindió con Qt/cromo (particularmente notable después de la M y la p): kerning with Qt/Chrome

+0

Ha intentado mirarlo en IExplore? ¿En qué SO estás? – RedX

+0

Sí, lo intenté con Internet Explorer 9. El resultado es mejor que la versión de Qt/Chrome, pero no tan bueno como el de Firefox. My soft está desarrollado para Windows. – gregseth

+0

¿Por qué sus dos textos de muestra tienen diferentes tamaños de punto? Es de esperar que el kerning no sea tan bueno en tamaños de fuente más pequeños. Quizás si haces que el texto de Chrome sea tan grande como el texto de Firefox, el problema desaparecerá. Vale la pena intentarlo, de todos modos. – TonyK

Respuesta

0

Aquí hay una solución simple,

Use la función siguiente y dibuje su widget QTextEdit completo en QImage, luego imprima ese QImage.

http://doc.qt.io/qt-5/qwidget.html#render

Qt utiliza diferentes renderizador para la impresión, creo que esto es un problema relacionado con él.

http://doc.qt.io/qt-5/paintsystem-devices.html

+0

Sí, crear una imagen está bien para un documento de una sola página. Pero para un documento multipágina, tendré que gestionar manualmente los saltos de página, para asegurar que el corte no ocurra en el medio de una línea, y así sucesivamente ... – gregseth

+0

¿Puedes probar QApplication :: setGraphicsSystem ("raster") (http://doc.qt.nokia.com/latest/qapplication.html#setGraphicsSystem)? Creo que es algo que tiene que ver con múltiples sistemas gráficos. – SunnyShah

+0

Por favor, hágame saber el resultado. – SunnyShah