cli: Move most classes to shared lib for reuse

Šī revīzija ir iekļauta:
2022-03-18 22:33:45 +01:00
vecāks d43c35819d
revīzija 478d57b342
33 mainīti faili ar 32 papildinājumiem un 44 dzēšanām

37
shared/pdfprocessor.cpp Parasts fails
Parādīt failu

@@ -0,0 +1,37 @@
#include <QScopedPointer>
#include <poppler-qt5.h>
#include "pdfprocessor.h"
PdfProcessor::PdfProcessor()
{
}
QVector<PageData> PdfProcessor::process(const QByteArray &data) const
{
QVector<PageData> result;
QScopedPointer<Poppler::Document> doc(Poppler::Document::loadFromData(data));
if(doc.isNull())
{
throw LooqsGeneralException("Failed to process pdf data");
}
if(doc->isLocked())
{
throw LooqsGeneralException("Doc is locked");
}
QRectF entirePage;
auto pagecount = doc->numPages();
QString entire;
entire.reserve(data.size()); // TODO too much
for(auto i = 0; i < pagecount; i++)
{
QString text = doc->page(i)->text(entirePage);
result.append({static_cast<unsigned int>(i + 1), text});
/*TODO: hack, so we can fts search several words over the whole document, not just pages.
* this of course uses more space and should be solved differently.
*/
entire += text;
}
result.append({0, entire});
return result;
}