QTextDocument is faster do show big html file as Chrome Browser
Unsolved
Qt Creator and other tools
-
I am excited by the new qt5, I remember that 9 years ago QTextDocument had other behaviors ..
Maybe the pictures I do not knowA pdf of 1MB (libre office use) converted into html to a readable quality reaches 60MB as html in the attached code ...
QTextDocument draws all 20 pages in 35sec.
Chrome Browser after 2 minutes says it does not respond ...If I show images from QPdfium, the time are much longer ... can anyone explain it?
here waht i run .../// same game to odt format image if load faster static inline QByteArray html_image(QImage x, const QSize area) { if (x.isNull()) { return QByteArray(); } QByteArray ba; QBuffer bu(&ba); //bu.open(QBuffer::ReadWrite); bu.open(QIODevice::WriteOnly); x.save(&bu,"JPG",5); bu.close(); QString head0 = QString("<img style='max-width:90vw' src='data:image/png;base64,"); QString head1 = QString("\' width=\'"); head1 += QString::number(area.width()); head1 += QString("\' height=\'"); head1 += QString::number(area.height()); head1 += QString("' />"); head0.replace(QChar(39), QChar(34)); head1.replace(QChar(39), QChar(34)); QByteArray endchunk = ba.toBase64(); /// tra_chunk.toBase64(); x.~QImage(); //// qDebug() << __FUNCTION__ << "- size-> " << endchunk.size(); endchunk.prepend(head0.toLatin1()); endchunk.append(head1.toLatin1()); //// qDebug() << __FUNCTION__ << "- " << endchunk; return endchunk; } /* MM_TO_POINT A4 210 mm × 297 mm some work to QTextDocument */ static inline QByteArray html_pdf_file(const QString file) { //// pdf file ... const qreal pixelscreenscale = 2; QSize _A4( MM_TO_POINT(210) / pixelscreenscale , MM_TO_POINT(297) / pixelscreenscale ); /// screen .. to print get full... QByteArray body,tmp,line; body += QByteArray("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\"> "); body += QByteArray("<html><head><meta name=\"qrichtext\" content=\"1\" /><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />" ); body += QByteArray("</head><body>" ); #ifdef LOADPDFIUMYES qreal scale = MM_TO_POINT(210) / _A4.width(); /// must give pixelscreenscale!!! QPdfium *m_pdf = new QPdfium(); m_pdf->loadFile(file); if (!m_pdf->isValid()) { return QByteArray(); } const int pagex = m_pdf->pageCount(); if (pagex > 0) { int dd=-1; do { dd++; //// qDebug() << __FUNCTION__ << " - " << scale << "- page " << dd; QPdfiumPage page = m_pdf->page(dd); QImage image = page.image(scale); if (image.isNull()) { return QByteArray(); } QByteArray img64 = html_image(image,_A4); /// .toLatin1(); image.~QImage(); line += QByteArray("<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"> "); line += img64; line += QByteArray("</p>"); body.append(line); } while( dd < (pagex -1) ); } #endif QByteArray footer = QByteArray("</body></html>"); body.append(footer); return body; }