Макет в HTML для печати с использованием QPainter

0

Как использовать QPainter для доступа к макету в html?

пример макета html для печати:

QString address= "Example address";
QString html_layout_print;
html_layout_print = "<div align="center">Layout html for print</div>"
                    "<div align="center">"+address+"</div>";

QPainter // << get html to print 

У меня возникли проблемы с созданием макета для печати с помощью команды painter.drawText().

Код:

QPrinter printer(QPrinter::HighResolution);
printer.setPageMargins(5,5,5,5,QPrinter::Millimeter);
QPainter painter(&printer);
painter.drawText(10, 10, QString("Header %1").arg("Header example"));

Новый код, QTextDocument:

  QString text_x = "Hello World!";
   QTextDocument *doc = new QTextDocument(this);
   doc->setUndoRedoEnabled(false);
   doc->setHtml("<p><span style=\"color:#000000; font-weight:600\">"+text_x+"</span></p>");
   doc->setTextWidth(width());
   doc->setUseDesignMetrics(true);
   doc->setDefaultTextOption(QTextOption(Qt::AlignHCenter));

   QPainter *p = new QPainter(this);
   p->setRenderHint(QPainter::Antialiasing, true);
   doc->drawContents(p);
   p->end();

Возвращение erro:

QPainter::pen: Painter not active
QPainter::setPen: Painter not active
QPainter::pen: Painter not active
QPainter::setPen: Painter not active
QPainter::setPen: Painter not active
QPainter::setPen: Painter not active
QPainter::restore: Unbalanced save/restore
QPainter::end: Painter not active, aborted
Теги:
qt
qtgui

1 ответ

0

Если вам нужна более сложная печать в формате HTML, вам необходимо изучить классы QWebKit. Создайте объект QWebPage, поставьте свой HTML-код и используйте вызов mainFrame() → render() с вашим художником. Это даст вам изображение, которое можно распечатать.

Если вам не нужен только образ, но только чистая печать, альтернативой является вызов mainFrame() → print().

  • 0
    Можете посмотреть на мой код? возвращает пустую страницу. QWebView *view = new QWebView(this); view->page()->mainFrame()->load(QUrl("http://www.google.com")); QPrinter printer; QPainter painter(&printer); view->page()->mainFrame()->render(&painter); painter.end();
  • 0
    Если вы используете QWebView, то сначала попробуйте view-> load (); И почему вы используете и маляр, и принтер? При использовании метода print () вам не понадобится художник.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню