📄 pdfviewer.cpp
字号:
#include "pdfviewer.h"Pdfviewer::Pdfviewer( QWidget * parent, Qt::WindowFlags f) : QLabel(parent, f){ setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); setScaledContents(true); m_document = NULL; m_currentPage = 0;}Pdfviewer::~Pdfviewer(){ if(m_document) delete m_document;}bool Pdfviewer::OpenDocument(QString filename){ if(m_document) delete m_document; m_document = Poppler::Document::load(filename); if (!m_document || m_document->isLocked()) { // ... error message .... qDebug()<<"Cannot open file"<<filename; if(m_document){ delete m_document; m_document = NULL; } return false; } m_currentPage = 0; // Paranoid safety check if(!m_document) return false; // Access page of the PDF file pdfPage = m_document->page(m_currentPage); // Document starts at page 0 if (!pdfPage) { return false; } // Generate a QImage of the rendered page image = pdfPage->renderToImage(); if (image.isNull()) { qDebug()<<"pdf file renderToImage error"; return false; } resize(pdfPage->pageSize()); showpage(0); return true;}void Pdfviewer::showpage(int npage){ // Paranoid safety check if (m_document == NULL) return; // Access page of the PDF file pdfPage = m_document->page(npage); // Document starts at page 0 if (!pdfPage) { return; } // Generate a QImage of the rendered page image = pdfPage->renderToImage(); if (image.isNull()) { qDebug()<<"pdf file renderToImage error"; return; } if(m_currentPage != npage){ m_currentPage = npage; update(); }}int Pdfviewer::allPageNum(){ return m_document->numPages(); }void Pdfviewer::paintEvent(QPaintEvent *){ QPainter painter(this); if (image.isNull()) { qDebug()<<"No image"; return; } else pixmap1 = QPixmap::fromImage(image); // ... use image ... painter.drawPixmap(0,0,pixmap1); // after the usage, the page must be deleted //delete pdfPage;}void Mainframe::scaleImage(double factor_x,double factor_y){ // Generate a QImage of the rendered page image = pdfPage->renderToImage(factor_x,factor_y); if (image.isNull()) { qDebug()<<"pdf file renderToImage error"; return; } adjustScrollBar(scrollArea->horizontalScrollBar(), factor); adjustScrollBar(scrollArea->verticalScrollBar(), factor); actionBig->setEnabled(scaleFactor < 3.0); actionSmall->setEnabled(scaleFactor > 0.333);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -