QWebEngine html 到 pdf 转换显示 QTWebEngineProcess 的控制台窗口

QWebEngine html to pdf conversion shows console window for QTWebEngineProcess

提问人:Maanu 提问时间:4/18/2023 更新时间:4/18/2023 访问量:41

问:

我们使用 Qt Web Engine 将 html 转换为 pdf。使用的代码如下。此代码工作正常。问题是在执行代码时,会出现QTWebEngineProcess.exe的控制台窗口。如果用户关闭窗口,则 pdf 打印将无法完成,应用程序将挂起。

只有当代码是从大型 QT 小部件应用程序执行时,才会出现该窗口(即使代码是在创建 QApplication 对象后执行的)。如果我们从boost测试用例中执行相同的代码,则不会出现该窗口。

显示窗口的原因可能是什么,以及如何避免此窗口显示?

我们使用 Qt5.12.6

    QWebEnginePage report;

    bool printingSuccessful = false;
    bool loadSuccessful = false;

    QObject::connect(&report, &QWebEnginePage::pdfPrintingFinished,
        [&printingSuccessful](const QString&, const bool success)
    {
        printingSuccessful = success;
    });

    QObject::connect(&report, &QWebEnginePage::loadFinished,
        [&loadSuccessful](const bool success)
    {
        loadSuccessful = success;
    });

    QEventLoop loop;
    QObject::connect(&report, &QWebEnginePage::loadFinished, &loop, &QEventLoop::quit);

    report.setHtml(htmlTemplate);

    loop.exec();

    if (!loadSuccessful)
    {
        throw std::exception("Could not load Html in QWebEngine.");
    }

    QObject::connect(&report, &QWebEnginePage::pdfPrintingFinished, &loop, &QEventLoop::quit);

    report.printToPdf(QString("C:\\Projects\\xy.pdf"));

    loop.exec();

    if (!printingSuccessful)
    {
        throw std::exception("Could not print Html to PDF.");
    }

enter image description here

QT QT5 QT 网络引擎

评论


答: 暂无答案