Encryption bugfixing

This commit is contained in:
Jakub Melka
2021-05-17 18:11:05 +02:00
parent 9539faf548
commit f070f0eb01
2 changed files with 37 additions and 19 deletions

View File

@ -316,10 +316,16 @@ PDFOperationResult PDFDocumentWriter::write(QIODevice* device, const PDFDocument
device->write(entry.object.isNull() ? "f" : "n");
writeCRLF(device);
}
// Jakub Melka: Adjust trailer dictionary, to be really dictionary, not a stream
PDFDictionary trailerDictionary = *document->getTrailerDictionary();
trailerDictionary.removeEntry("XRefStm");
PDFObject trailerDictionaryObject = PDFObject::createDictionary(std::make_shared<PDFDictionary>(qMove(trailerDictionary)));
device->write("trailer");
writeCRLF(device);
PDFWriteObjectVisitor trailerVisitor(device);
storage.getTrailerDictionary().accept(&trailerVisitor);
trailerDictionaryObject.accept(&trailerVisitor);
writeCRLF(device);
device->write("startxref");
writeCRLF(device);
@ -339,7 +345,7 @@ void PDFDocumentWriter::writeCRLF(QIODevice* device)
void PDFDocumentWriter::writeObjectHeader(QIODevice* device, PDFObjectReference reference)
{
QString objectHeader = QString("%1 %2 obj").arg(QString::number(reference.objectNumber)).arg(QString::number(reference.generation));
QString objectHeader = QString("%1 %2 obj").arg(QString::number(reference.objectNumber), QString::number(reference.generation));
device->write(objectHeader.toLatin1());
writeCRLF(device);
}