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

问题描述 投票:0回答:0

我们使用 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.");
    }

qt qt5 qtwebengine
© www.soinside.com 2019 - 2024. All rights reserved.