Qt5 Poppler - 将单个PDF页面缓慢渲染为图像

时间:2015-11-27 15:10:39

标签: linux qt pdf qt5 poppler

我想将一个PDF查看器添加到我目前正在使用的嵌入式设备上,该设备在Xilinx Zynq SoC上运行Linux / Qt5。通常,该设备非常快,可以应对一些体面的工作负荷,例如使用QCustomPlot每100ms绘制一个8192点图。

我遇到了Poppler / libpoppler并且认为完成手头的任务是完美的,即显示PDF。我已经编写了一些演示代码,并且从这段代码中调用poppler的renderToImage()方法需要将近1分钟,以便我可以将PDF转换为要在UI上显示的图像。

有没有人使用Poppler-Qt5并发现了类似的结果或加速的方法?如果没有,是否还有其他我应该关注的库与Qt很好地集成?

这是我的演示代码片段:

// Load pdf
Poppler::Document* document = Poppler::Document::load("/tmp/test.pdf");
document->setRenderHint(Poppler::Document::Antialiasing);
document->setRenderHint(Poppler::Document::TextAntialiasing);

if (!document || document->isLocked() || document == 0 )
{
    cout << "ERROR" << endl;
}

Poppler::Page* pdfPage = document->page(0);
if (pdfPage == 0)
{
    cout << "ERROR" << endl;
}

// Generate a QImage of the rendered page
QImage image = pdfPage->renderToImage(72.0,72.0,0,0,pdfPage->pageSize().width(),pdfPage->pageSize().height());
if (image.isNull())
{
    cout << "ERROR" << endl;
}

ui->label->setPixmap(QPixmap::fromImage(image));
ui->label->show();

// after the usage, the page must be deleted
delete pdfPage;
delete document;

0 个答案:

没有答案