使用Qt将HTML转换为PDF [英] Converting HTML to PDF with Qt

查看:1854
本文介绍了使用Qt将HTML转换为PDF的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to convert an HTML file to PDF. The whole idea is to create a pdf with many pages, filling the first one with the HTML file contents. Currently I'm trying to do just that, and the code is:

  #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在底部。

But when I check the output PDF, it's an empty page, just with the page number 1 at the bottom. What am I doing wrong?

另外,我注意到当使用QTextStream时,它只会得到

Also, I have noticed that when using QTextStream, it only gets "

推荐答案

使用

 htmlContent=in.readAll();

而不是

 in >> htmlContent;

这应该可以工作!

这篇关于使用Qt将HTML转换为PDF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆