使用 Qt 将 HTML 转换为 PDF

Converting HTML to PDF with Qt

本文关键字:PDF 转换 HTML Qt 使用      更新时间:2023-10-16

我正在尝试将HTML文件转换为PDF。整个想法是创建一个包含许多页面的pdf,用HTML文件内容填充第一个页面。目前我正在尝试这样做,代码是:

  #include "qprinterexample.h"
    #include <QtGui/QApplication>
    #include <QTextDocument>
    #include <QTextStream>
    #include <QFile>
    #include <QPrinter>
    #include <QDir>
   int print(){
    const int highQualityDPI = 300;
    QDir::setCurrent(QCoreApplication::applicationDirPath());
    QFile  htmlFile ("ejemplo.htm");
    if (!htmlFile.open(QIODevice::ReadOnly | QIODevice::Text)){
        return -1;
    }
    QString htmlContent;
    QTextStream in(&htmlFile);
    in >> htmlContent;
    QTextDocument *document = new QTextDocument();
    document->setHtml(htmlContent);
    QPrinter printer(QPrinter::HighResolution);
    printer.setPageSize(QPrinter::A4);
    printer.setOutputFormat(QPrinter::PdfFormat);
    printer.setOutputFileName("output.pdf");
    document->print(&printer);
    delete document;
    return 0;
}
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QPrinterExample w;
        if(print()<0) return -1;
        w.show();
        return a.exec();
    }

但是当我检查输出的 PDF 时,它是一个空白页面,只有页码 1 在底部。我做错了什么?

另外,我注意到在使用QTextStream时,它只会得到">

使用

 htmlContent=in.readAll();

而不是

 in >> htmlContent;

这应该有效!