Russian Qt Forum

Qt => Печать => Тема начата: soaup от Август 11, 2016, 09:10



Название: [5.5] QWebView::print() и малый размер элементов
Отправлено: soaup от Август 11, 2016, 09:10
Уже задавали подобный вопрос год назад (http://www.prog.org.ru/topic_29296_0.html), а ответа так и нет. Разница в dpi монитора и принтера, и соответственно - малый размер элементов при печати HTML документа.
Есть идея масштабировать текст при помощи функции setTextSizeMultiplier(qreal multiplier). Мне бы знать формулу и как найти составляющие. DPI монитора вроде можно вычислить по формуле:
 sqrt(x^2+y^2)/диагональ.
А вот как найти DPI принтера и как потом вычислить необходимый коэффициент? Есть у QPrinter параметры logicalDpiX и logicalDpiY но к ним доверия нету - они всегда 96 возвращают. Может за это время еще какой-нибудь способ появился?


Название: Re: [5.5] QWebView::print() и малый размер элементов
Отправлено: soaup от Август 13, 2016, 16:57
Может тут все математикой какой можно решить... Есть данные о DPI монитора и DPI принтера, разрешении экрана и размерах страницы. Как высчитать коэффициент на который нужно увеличить размер шрифта? Нашел в справке Qt статью Scalability а там
Код
C++ (Qt)
qreal refDpi = 216.;
qreal refHeight = 1776.;
qreal refWidth = 1080.;
QRect rect = qApp->primaryScreen()->geometry();
qreal height = qMax(rect.width(), rect.height());
qreal width = qMin(rect.width(), rect.height());
qreal dpi = qApp->primaryScreen()->logicalDotsPerInch();
m_ratio = qMin(height/refHeight, width/refWidth);
m_ratioFont = qMin(height*refDpi/(dpi*refHeight), width*refDpi/(dpi*refWidth));
т.е. m_ratioFont по идее должен и быть этим самым коэффициентом. А на деле (проверял на нескольких мониторах) - в одних случаях меньше чем нужно, в других больше.