![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/share/emscripten/tests/poppler/qt/ |
Upload File : |
#include <qapplication.h> #include <qpainter.h> #include <qpixmap.h> #include <qwidget.h> #include <qlabel.h> #include <qmessagebox.h> #include <qfile.h> #include <ctype.h> #include <poppler-qt.h> #include <stdlib.h> class PDFDisplay : public QWidget // picture display widget { public: PDFDisplay( Poppler::Document *d ); ~PDFDisplay(); protected: void paintEvent( QPaintEvent * ); void keyPressEvent( QKeyEvent * ); private: void display(); int currentPage; QPixmap *pixmap; Poppler::Document *doc; }; PDFDisplay::PDFDisplay( Poppler::Document *d ) { doc = d; pixmap = 0; currentPage = 0; display(); } PDFDisplay::~PDFDisplay() { delete doc; delete pixmap; } void PDFDisplay::paintEvent( QPaintEvent *e ) { QPainter paint( this ); // paint widget if (pixmap) paint.drawPixmap(0, 0, *pixmap); } void PDFDisplay::keyPressEvent( QKeyEvent *e ) { if (e->key() == Qt::Key_Down) { if (currentPage + 1 < doc->getNumPages()) { currentPage++; display(); } } else if (e->key() == Qt::Key_Up) { if (currentPage > 0) { currentPage--; display(); } } } void PDFDisplay::display() { if (doc) { Poppler::Page *page = doc->getPage(currentPage); if (page) { delete pixmap; page->renderToPixmap(&pixmap, -1, -1, -1, -1); delete page; update(); } } else { printf("doc not loaded\n"); } } int main( int argc, char **argv ) { QApplication a( argc, argv ); // QApplication required! if ( argc < 2 || (argc == 3 && strcmp(argv[2], "-extract") != 0) || argc > 3) { // use argument as file name printf("usage: test-poppler-qt filename [-extract]\n"); exit(1); } Poppler::Document *doc = Poppler::Document::load(argv[1]); if (!doc) { printf("doc not loaded\n"); exit(1); } if (argc == 2) { PDFDisplay test( doc ); // create picture display a.setMainWidget( &test); // set main widget test.setCaption("Poppler-Qt Test"); test.show(); // show it return a.exec(); // start event loop } else { Poppler::Page *page = doc->getPage(0); QLabel *l = new QLabel(page->getText(Poppler::Rectangle()), 0); l->show(); a.setMainWidget(l); // set main widget delete page; delete doc; return a.exec(); } }