diff --git a/utils/pdfunite.cc b/utils/pdfunite.cc index 6573f04..3b2cfee 100644 --- a/utils/pdfunite.cc +++ b/utils/pdfunite.cc @@ -109,6 +109,13 @@ int main (int argc, char *argv[]) PDFDoc::writeHeader(outStr, majorVersion, minorVersion); for (i = 0; i < (int) docs.size(); i++) { + // get resources dict. + Object catObj, pagesObj, resourcesObj; + docs[i]->getXRef()->getCatalog(&catObj); + Dict *catDict = catObj.getDict(); + catDict->lookup("Pages", &pagesObj); + Dict *pagesDict = pagesObj.getDict(); + pagesDict->lookup("Resources", &resourcesObj); for (j = 1; j <= docs[i]->getNumPages(); j++) { PDFRectangle *cropBox = NULL; if (docs[i]->getCatalog()->getPage(j)->isCropped()) @@ -119,9 +126,13 @@ int main (int argc, char *argv[]) Ref *refPage = docs[i]->getCatalog()->getPageRef(j); Object page; docs[i]->getXRef()->fetch(refPage->num, refPage->gen, &page); + Dict *pageDict = page.getDict(); + if (resourcesObj.isDict()) { + Object *newResources = new Object(); + pageDict->add(copyString("Resources"), resourcesObj.copy(newResources)); + } pages.push_back(page); offsets.push_back(numOffset); - Dict *pageDict = page.getDict(); docs[i]->markPageObjects(pageDict, yRef, countRef, numOffset); } objectsCount += docs[i]->writePageObjects(outStr, yRef, numOffset, gTrue);