Название: QPrintPreviewDialog печатает пустые листы Отправлено: alex7annet от Июль 20, 2011, 16:28 Привет всем!! Проблема следующая: не работает вывод на печать. В QPrintPreviewDialog появляется инфа для печати, а печатаются пустые листы. Кто-нибудь сталкивался ??? В линуксе ТОТ ЖЕ САМЫЙ КОД работает без проблем.
Windows XP, MinGW 4.4.0, Qt 4.7.3 Код: void SalesList::printDoc(const QString &htmlText) { Название: Re: QPrintPreviewDialog печатает пустые листы Отправлено: sergun1604 от Июль 21, 2011, 15:33 Переходи на Линукс!!!
Название: Re: QPrintPreviewDialog печатает пустые листы Отправлено: mishabard от Июль 21, 2011, 15:39 Сейчас как раз пытаюсь решить ту же проблему. Под Линксом тоже самое. У меня HTML страница примерно на три листа, так в предварительном просмотре появлется возможность перейти на все три листа, но 2 и 3 пустые.
Название: Re: QPrintPreviewDialog печатает пустые листы Отправлено: alex7annet от Июль 21, 2011, 18:53 Ну я уже на Линуксе, просто прогу нужно сделать именно для Windows. У меня в линуксе тоже не отображаются на предварительном просмотре все листы кроме первого, скорее всего дело в драйвере или в иксах, т.к. в Windows хоть и печатает пустые листы, но на предварительном просмотре все отлично. Сейчас скомпилировал qt ничего не отключая - попробую отпишусь)
Название: Re: QPrintPreviewDialog печатает пустые листы Отправлено: alex7annet от Июль 23, 2011, 07:55 Не работает все равно. У кого-нибудь вообще работает печать QPrinter+QWebView на Windows. Если да, то с какими параметрами копилили qt и какой код реализует печать.
Уже все перепробовал. QTextEdit - печатает, QTextDocument - печатает, QWebView - нет. Не могу никак сообразить в чем косяк ??? Ну не вариант рисовать все документы QPainter'ом... Скорее всего ошибка в самом QT. Т.к. QWebView правильно отображает, но все равно печатает пустой лист. Это не зависит ни от от принтера ни от компьютера, ни от конкретной windows (проверял на xp/7). Сначала я подумал, что может быть дело в сложных CSS, которые дают где-то ошибку, но даже простая страница ("<html><body><p align=center><h1>ЭТО ТЕСТ ДЛЯ ПЕЧАТИ HTML СТРАНИЦЫ</h1></p></body></html>") все равно не печатается. Название: Re: QPrintPreviewDialog печатает пустые листы Отправлено: alex7annet от Июль 24, 2011, 12:42 Проблема решилась.
Как я правильно предположил, дело было в баге qprinter. Вот соответствующий патч: https://bugreports.qt.nokia.com/browse/QTBUG-17987 (https://bugreports.qt.nokia.com/browse/QTBUG-17987) Название: Re: QPrintPreviewDialog печатает пустые листы Отправлено: mishabard от Июль 25, 2011, 09:37 Спасибо! попробую его под линуксом. может предварительный просмотр всех страниц появиться, а не только первой)))))
Название: Re: QPrintPreviewDialog печатает пустые листы Отправлено: alex7annet от Июль 25, 2011, 10:20 Вряд ли.
Во-первых не отображение страниц и их не печать - это разные вещи. Кстати у меня тоже под линухом в предварительном просмотре отображается только первая страница, остальные пустые, хотя печатаются все - я думаю на этот счет стоит тоже поискать на багтрекере, в более ранних версиях qt такого не наблюдалось, скорее всего этот баг возник в версиях 4.7.2-4.7.3, как и пустые страницы, что-то они там с печатью намутили, поэтому в 4.7.4 должны поправить (как мне кажется). Во-вторых баг помечен как баг под Windows. В общем поищу как отладить эту багу, если найду то напишу) Название: Re: QPrintPreviewDialog печатает пустые листы Отправлено: alex7annet от Июль 26, 2011, 10:29 Так, эта бага (не отображение всех страниц, кроме первой в QPrintPreviewDialog на линуксе) еще дополняется таким неприятным эффектом - когда вставляешь разрыв страницы в любое место, пропадает вообще все, даже первая страница. На багтрекере нашел очень похожий глюк:
https://bugreports.qt.nokia.com/browse/QTBUG-17895 (https://bugreports.qt.nokia.com/browse/QTBUG-17895) Но там рекомендуют либо откатиться на 4.7.1, либо дождаться следующей версии.. Проблема только в том, что у меня в gentoo уже нет версии 4.7.1, либо 4.6.3, либо 4.7.2-3 (( Название: Re: QPrintPreviewDialog печатает пустые листы Отправлено: alex7annet от Июль 26, 2011, 22:23 Еще один баг - qt игнорирует разрыв страницы: page-break-after/before.
Вообще хочу сказать, что qt это конечно круто, но печать ее ОЧЕНЬ слабое место. Я потратил 3 дня чтобы научить свою программу нормально печатать документы, в итоге так и не вышло. Поэтому я потратил еще два часа и реализовал свой предпросмотр печати на основе QWebView, в который я могу добавлять html странички, он их корректно отображает и печатает на Linux/Windows. |