// SPDX-FileCopyrightText: 2022-2024 Open Mobile Platform LLC // SPDX-License-Identifier: BSD-3-Clause #ifndef PDFDOCUMENTITEM_H #define PDFDOCUMENTITEM_H #include #include #include #include #include #include #include "basedocument.h" #include "pdfpageitem.h" #include "pagepreloader.h" class PdfPage; class PdfDocument; class PdfDocumentItem : public BaseDocument { Q_OBJECT public: explicit PdfDocumentItem(QObject *parent = nullptr); ~PdfDocumentItem(); QString path() const override; QSizeF pageSize(int pageNumber) const override; Q_INVOKABLE int count() const override; void loadAllPages() override; QSharedPointer loadPage(int pageIndex) override; void startLoadBookmarks() const override; QVector bookmarks() const override; int fileVersion() const override; bool saveDocumentAs(const QString &path) const override; public slots: void setPath(const QString &path) override; private: void onPagePreloaderDone(int loadedPageIndex, PageLoadStatus loadStatus); private: QSharedPointer m_pdfiumDocument; QHash m_pageSizes; QHash> m_loadedPages; QSet m_pagesInProcess; QVector m_baseBookmarks; QPointer m_preloaderAllPage; }; #endif // PDFDOCUMENTITEM_H