Qt显示PDF之二 QAxWidget, QAxWidget



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




  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值