Pdfviewer::Pdfviewer( QWidget * parent)
: QTextBrowser(parent)
{
m_document = NULL;
m_currentPage = 0;
}
bool Pdfviewer::OpenDocument(QString filename)
{
// TODO
if(filename.isEmpty())
return false;
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 = -1;
showpage(0);
return true;
}
void Pdfviewer::showpage(int npage)
{
// Paranoid safety check
if (m_document == NULL)
return;
if(m_currentPage != npage){
m_currentPage = npage;
update();
}
}
void Pdfviewer::paintEvent(QPaintEvent *)
{
QPainter painter(this);
// Paranoid safety check
if(!m_document)
return;
// Access page of the PDF file
Poppler::Page* pdfPage = m_document->page(m_currentPage); // Document starts at page 0
if (!pdfPage) {
return;
}
// Generate a QImage of the rendered page
QImage image = pdfPage->renderToImage();
if (image.isNull()) {
qDebug()<<"pdf file renderToImage error";
return;
}
// ... use image ...
painter.drawImage(0,0, image);
// after the usage, the page must be deleted
delete pdfPage;
}
......