gpt4 book ai didi

c++ - QWebView 不能在真正的打印机上打印多页?

转载 作者:搜寻专家 更新时间:2023-10-31 01:47:24 24 4
gpt4 key购买 nike

好吧,我正在尝试使用 CSS 分页符属性打印具有多个页面的 QWebView,该属性适用于 WebKit。我正在使用 Qt 5.1.1。

我的主要问题是,当我使用 Qt 将其打印为 PDF 时,一切都很好,但是当我尝试将其实际打印到真正的打印机时,除了第一页之外的所有页面都是空白的!这是我的(剥离的)测试代码:

测试.h :

class MainWindow : public QMainWindow, private Ui::MainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);

public slots:
void printHTML();
void printPreview(QPrinter *printer);
private:
QWebView webView;
};

测试.cpp :

#include "Test.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
QString html;
html= "<!DOCTYPE html><html> <head> <meta http-equiv='content-type' content='text/html;charset=UTF-8' /> <title>Paginated HTML</title> <style type='text/css' media='print'> div.page { page-break-after: always; page-break-inside: avoid; } </style> </head> <body> <div class='page'> <h1>This is Page 1</h1> </div> <div class='page'> <h1>This is Page 2</h1> </div> <div class='page'> <h1>This is Page 3</h1> </div> </body></html>";

webView.setHtml(html);
printHTML();
}

void MainWindow::printPreview(QPrinter *printer)
{
webView.print(printer);
}

void MainWindow::printHTML()
{
QPrinter printer;
QPrintPreviewDialog preview(&printer);
preview.setWindowTitle("Test imp");

connect(&preview, SIGNAL(paintRequested(QPrinter*)), this, SLOT(printPreview(QPrinter*)));

preview.exec();

this->close();
}

我已经将一个 HTML 示例作为字符串嵌入,这个示例可以与任何其他 WebKit 引擎一起正常工作并且打印效果很好。

预览会显示它应该打印的样子,当你使用预览的打印按钮实际打印它时,它会毫无问题地打印第一页,但随后所有剩余页面将完全空白,空白。

我找不到任何解决方法,使用 QPainter 来渲染它是不可能的,因为我需要有多个页面,而 QPainter 并不是管理多个页面的好方法(至少我不知道它是否能够:我从未见过任何 QPainter 在渲染后管理多个页面。)

PS:自己试一下,加一个

    printer.setOutputFormat(QPrinter::PdfFormat);

就在 QPrinter 声明工作正常之后,它被保存为 PDF 并与打印出来的每一页一起显示。这是一个问题,因为我需要打印到普通打印机并且希望避免另存为 pdf 然后打印 PDF。

最佳答案

这在 Qt 中从未得到纠正,但现在 QWebView 已被 QWebEngine 取代,并且在打印页面时不会遇到这些问题。

关于c++ - QWebView 不能在真正的打印机上打印多页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19211337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com