Ejemplo n.º 1
0
bool Phantom::render(const QString &fileName)
{
    QFileInfo fileInfo(fileName);
    QDir dir;
    dir.mkpath(fileInfo.absolutePath());

    if (fileName.endsWith(".pdf", Qt::CaseInsensitive))
        return renderPdf(fileName);

    QSize viewportSize = m_page.viewportSize();

    QSize pageSize = m_page.mainFrame()->contentsSize();

    QSize bufferSize;
    if (!m_clipRect.isEmpty()) {
        bufferSize = m_clipRect.size();
    } else {
        bufferSize = m_page.mainFrame()->contentsSize();
    }

    if (pageSize.isEmpty())
        return false;

    QImage buffer(bufferSize, QImage::Format_ARGB32);
    buffer.fill(qRgba(255, 255, 255, 0));
    QPainter p(&buffer);

    p.setRenderHint(QPainter::Antialiasing, true);
    p.setRenderHint(QPainter::TextAntialiasing, true);
    p.setRenderHint(QPainter::SmoothPixmapTransform, true);

    m_page.setViewportSize(pageSize);

    if (!m_clipRect.isEmpty()) {
        p.translate(-m_clipRect.left(), -m_clipRect.top());
        m_page.mainFrame()->render(&p, QRegion(m_clipRect));
    } else {
        m_page.mainFrame()->render(&p);
    }

    p.end();
    m_page.setViewportSize(viewportSize);

    if (fileName.toLower().endsWith(".gif")) {
        return exportGif(buffer, fileName);
    }

    return buffer.save(fileName);
}
Ejemplo n.º 2
0
 void renderReport(HPDF_Doc pdf) {
   renderPdf(Wt::WString::tr("report.example"), pdf);
 }