Документация
ОС Аврора 5.1.5
AmberPDF
AmberPDF является оболочкой для PDFium, которая позволяет использовать PDFium в Qt. PDFium — это библиотека для создания и рендеринга PDF. PDFium не поддерживает многопоточность, и многие методы возвращают QFuture<>.
Подключение к проекту
В файле .spec должна быть указана зависимость сборки:
BuildRequires: pkgconfig(amberpdf)
В файл .pro нужно добавить:
CONFIG += link_pkgconfig
PKGCONFIG += amberpdf
Использование PdfDocument
Подключение заголовочного файла:
#include <amberpdf/pdfdocument.h>
Создание и загрузка pdf документа и подсчет количества страниц документа:
auto documentProvider = new PdfDocument();
connect(documentProvider, &PdfDocument::statusChanged, this, [this](PdfDocument::DocumentStatus status) {
if (status == BaseDocument::DocumentStatus::Ready) {
// document load succesfully
} else {
qDebug() << "Document load error" << status;
}
});
connect(documentProvider, &PdfDocument::pageCountChanged, this, [this](int pageCount) {
if (status == BaseDocument::DocumentStatus::Ready)
qDebug() << "Document have" << pageCount << "pages";
});
documentProvider->setPath("path/to/the/pdf/document.pdf");
Использование PdfPage
Подключение заголовочного файла:
#include <amberpdf/pdfpage.h>
Загрузка PdfPage, блокирующий метод:
auto pageFuture = m_document->page(m_pageIndex);
pageFuture.waitForFinished();
if (pageFuture.isFinished() && !pageFuture.isCanceled())
qDebug() << "page load successfuly";
или, используя QFutureWatcher
:
auto watcher = new QFutureWatcher<QSharedPointer<PdfPage>>();
watcher->setFuture(m_pdfiumDocument->page(1));
connect(watcher, &QFutureWatcher<QSharedPointer<PdfPage>>::finished, this, [this]() {
auto page = watcher->result();
});