File indexing completed on 2024-04-21 05:54:07
0001 /** 0002 * SPDX-FileCopyrightText: 2021 by Alexander Stippich <a.stippich@gmx.net> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #ifndef DOCUMENT_SAVER_H 0008 #define DOCUMENT_SAVER_H 0009 0010 #include <memory> 0011 0012 #include <QObject> 0013 #include <QFileInfo> 0014 #include <QList> 0015 #include <QUrl> 0016 #include <QImage> 0017 #include <QPainter> 0018 #include <QPdfWriter> 0019 0020 #include "SkanpageUtils.h" 0021 0022 class OCREngine; 0023 0024 class DocumentSaver : public QObject 0025 { 0026 Q_OBJECT 0027 0028 public: 0029 explicit DocumentSaver(QObject *parent = nullptr); 0030 ~DocumentSaver(); 0031 0032 void saveDocument(const QUrl &fileUrl, const SkanpageUtils::DocumentPages &document, const SkanpageUtils::FileType type, const QString &title); 0033 void saveNewPageTemporary(const int pageID, const QImage &image); 0034 void setOCREngine(OCREngine *engine); 0035 0036 Q_SIGNALS: 0037 void showUserMessage(SkanpageUtils::MessageLevel level, const QString &text); 0038 void fileSaved(const QList<QUrl> &fileUrls, const SkanpageUtils::DocumentPages &document); 0039 void sharingFileSaved(const QList<QUrl> &fileUrls); 0040 void pageTemporarilySaved(const int pageID, const SkanpageUtils::PageProperties &page); 0041 0042 private: 0043 void savePDF(const QUrl &fileUrl, const SkanpageUtils::DocumentPages &document, const SkanpageUtils::FileType type); 0044 void saveImage(const QFileInfo &fileInfo, const SkanpageUtils::DocumentPages &document, const SkanpageUtils::FileType type); 0045 void saveSearchablePDF(const QUrl &fileUrl, const SkanpageUtils::DocumentPages &document, const QString &title); 0046 void printPage(QPdfWriter &writer, QPainter &painter, const SkanpageUtils::PageProperties &page, bool firstPage); 0047 OCREngine *m_OCREngine; 0048 }; 0049 0050 #endif // DOCUMENT_SAVER_H