Qt5 Poppler - Медленное рендеринг одной страницы PDF в изображение

Я хотел бы добавить средство просмотра PDF к встроенному устройству, над которым я сейчас работаю и которое работает под управлением Linux/Qt5 на Xilinx Zynq SoC. Как правило, устройство довольно быстрое и может справиться с некоторой приличной рабочей нагрузкой, такой как построение 8192 точек на каждые 100 мс с использованием QCustomPlot.

Я наткнулся на Poppler/libpoppler и подумал, что было бы идеально, чтобы выполнить задачу в руках, то есть показать PDF. Я написал некоторый демонстрационный код, и из этого кода требуется почти 1 минута для вызова метода poppler renderToImage(), чтобы я мог преобразовать PDF в изображение для отображения в пользовательском интерфейсе.

Кто-нибудь использовал 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 ответов

Другие вопросы по тегам