1. QAxWidget显示pdf非常简单:直接上代码
class SCPdfWidget : public QAxWidget
{
public:
//SCPdfWidget(QWidget *parent = NULL);
SCPdfWidget(QWidget *parent = NULL);
void openPdf(const QString &pdfFilePath);
};
SCPdfWidget::SCPdfWidget(QWidget *parent):QAxWidget(parent)
{
}
void SCPdfWidget::openPdf(const QString &pdfFilePath)
{
if(!this->setControl("Adobe PDF Reader"))
{
QMessageBox::critical(this, "Error", QStringLiteral("没有安装pdf!"));
return;
}
this->dynamicCall(
"LoadFile(const QString&)",
pdfFilePath);
}
需要安装
Adobe PDF或者其他pdf显示的软件。
2. poppler显示PDF
下载该库的windows版本,目前只有32位的版本poppler-0.39.0-win32
下载poppler源码,将qt5目录下的include提出来
32位版本中的libpoppler.dll.a 和libpoppler.lib.a 直接将后面的.a去掉即可
将include 和库都导入到工程
添加如下代码:
QImage image;
Poppler::Document* document = Poppler::Document::load(filePath);
if (!document || document->isLocked()) {
// ... error message ....
delete document;
return;
}
// Document starts at page 0
Poppler::Page* pdfPage = document->page(pageNumber);
// Generate a QImage of the rendered page
image = pdfPage->renderToImage(72, 72, -1, -1, -1, -1);
if (image.isNull()) {
// ... error message ...
return;
}
// after the usage, the page must be deleted
delete pdfPage;
delete document;
最后用一个Qt窗体显示该image即可,本质就是一张图片。