thejagstudio's picture
Upload 714 files
5cee033 verified
#include <cstdint>
#include <poppler-qt5.h>
#include <QtCore/QBuffer>
static void dummy_error_function(const QString &, const QVariant &) { }
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
{
Poppler::setDebugErrorFunction(dummy_error_function, QVariant());
const QFont font(QStringLiteral("Helvetica"), 20);
const QColor color = QColor::fromRgb(0xAB, 0xCD, 0xEF);
QByteArray in_data = QByteArray::fromRawData((const char *)data, size);
Poppler::Document *doc = Poppler::Document::loadFromData(in_data);
if (!doc || doc->isLocked()) {
delete doc;
return 0;
}
for (int i = 0; i < doc->numPages(); i++) {
Poppler::Page *p = doc->page(i);
if (!p) {
continue;
}
Poppler::TextAnnotation *ann = new Poppler::TextAnnotation(Poppler::TextAnnotation::InPlace);
ann->setTextFont(font);
ann->setTextColor(color);
ann->setBoundary(QRectF(0.1, 0.1, 0.2, 0.2));
ann->setContents(QString(in_data));
p->addAnnotation(ann);
QBuffer buffer;
buffer.open(QIODevice::WriteOnly);
std::unique_ptr<Poppler::PDFConverter> conv(doc->pdfConverter());
conv->setOutputDevice(&buffer);
conv->setPDFOptions(Poppler::PDFConverter::WithChanges);
conv->convert();
buffer.close();
delete ann;
delete p;
}
delete doc;
return 0;
}