#pragma once #include #include #include "nglwidgets_export.h" #ifdef HAVE_POPPLER_QT6 #include #endif class QUrl; namespace Ui { class pdfWidget; } namespace NGL { class NGLWIDGETS_EXPORT PDFWidget : public QWidget { Q_OBJECT public: explicit PDFWidget(QWidget *parent = nullptr); ~PDFWidget(); bool showPDF(const QUrl &pdf); bool showPDF(const QByteArray &pdf); void setZoomFactor(double newZoomFactor); #ifdef HAVE_POPPLER_QT6 void setRotation(Poppler::Page::Rotation rot); #endif bool setPage(int newPage); #ifdef HAVE_POPPLER_QT6 QVector getPrintableImages(int resolution = 300) const; void resizePdfToWidth(); #endif int numPages() const; int curPage() const; Q_SIGNALS: void currentPageChanged(int cur, int max); #ifdef HAVE_POPPLER_QT6 void rotationChanged(Poppler::Page::Rotation newRotation); #endif protected Q_SLOTS: void pageChanged(int cur, int max); #ifdef HAVE_POPPLER_QT6 void rotate(); void onZoomDefault(); void onZoomFull(); void onZoomMinus(); void onZoomPlus(); #endif protected: double m_zoomFactor{1.0}; std::unique_ptr ui; }; }