Qt显示PDF之二 QAxWidget, QAxWidget

xiaoxiao2021-02-28  87



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即可,本质就是一张图片。

转载请注明原文地址: https://www.6miu.com/read-83952.html

最新回复(0)