c++ - 使用 Qt 将 HTML 转换为 PDF

标签 c++ qt pdf

我正在尝试将 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;

这应该有效!

关于c++ - 使用 Qt 将 HTML 转换为 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10697228/

相关文章:

c++ - 在 Qt GUI 事件线程中检测到 "I' m 正在运行

c++ - 为什么 map 的元素不需要复制或移动构造函数,而 vector 的元素需要?

c++ - 遍历 QLineSeries 项目及其点

python - 刷新 QWidget

javascript - Kendo UI Drawing API 导出 PDF 过早拆分 html 表格,在页面上生成无用的空白空间

java - 使用itextpdf为对齐的pdf文本添加下划线

c++ - EXC_BREAKPOINT 崩溃的原因

c++ - 在树结构 .txt 文件中搜索节点

css - 如何转换 Markdown + CSS -> PDF?

c++ - 连接qt和matlab时出错