Spaces:
Running
Running
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; | |
} | |