Roman Rdgz
Roman Rdgz

Reputation: 13264

Converting HTML to PDF with Qt

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();
    }

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?

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

Upvotes: 4

Views: 10589

Answers (1)

ScarCode
ScarCode

Reputation: 3094

Use

 htmlContent=in.readAll();

Instead of

 in >> htmlContent;

This should work!

Upvotes: 5

Related Questions