2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-06-05 03:40:53 +00:00

Merge pull request #981 from m-holger/writer

Remove redundant loop in QPDFWriter::prepareFileForWrite
This commit is contained in:
Jay Berkenbilt 2023-06-17 10:57:56 -04:00 committed by GitHub
commit 21612165c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2034,29 +2034,25 @@ QPDFWriter::getTrimmedTrailer()
return trailer;
}
// Make document extension level information direct as required by the spec.
void
QPDFWriter::prepareFileForWrite()
{
// Make document extension level information direct as required by the spec.
m->pdf.fixDanglingReferences();
QPDFObjectHandle root = m->pdf.getRoot();
for (auto const& key: root.getKeys()) {
QPDFObjectHandle oh = root.getKey(key);
if ((key == "/Extensions") && (oh.isDictionary())) {
bool extensions_indirect = false;
if (oh.isIndirect()) {
QTC::TC("qpdf", "QPDFWriter make Extensions direct");
extensions_indirect = true;
oh = root.replaceKeyAndGetNew(key, oh.shallowCopy());
}
if (oh.hasKey("/ADBE")) {
QPDFObjectHandle adbe = oh.getKey("/ADBE");
if (adbe.isIndirect()) {
QTC::TC("qpdf", "QPDFWriter make ADBE direct", extensions_indirect ? 0 : 1);
adbe.makeDirect();
oh.replaceKey("/ADBE", adbe);
}
auto root = m->pdf.getRoot();
auto oh = root.getKey("/Extensions");
if (oh.isDictionary()) {
const bool extensions_indirect = oh.isIndirect();
if (extensions_indirect) {
QTC::TC("qpdf", "QPDFWriter make Extensions direct");
oh = root.replaceKeyAndGetNew("/Extensions", oh.shallowCopy());
}
if (oh.hasKey("/ADBE")) {
auto adbe = oh.getKey("/ADBE");
if (adbe.isIndirect()) {
QTC::TC("qpdf", "QPDFWriter make ADBE direct", extensions_indirect ? 0 : 1);
adbe.makeDirect();
oh.replaceKey("/ADBE", adbe);
}
}
}