poppler/PDFDoc.cc | 49 +++++++++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 20 deletions(-)
New commits: commit 63c942a45227ef28fb94ef4765171d9812fffafa Author: Albert Astals Cid <[email protected]> Date: Sun Dec 4 17:29:45 2011 +0100 Do not fail if we are trying to save a file with Encrypt but that we have not modified at all Fixes KDE bug #288045 diff --git a/poppler/PDFDoc.cc b/poppler/PDFDoc.cc index 01d2759..2758206 100644 --- a/poppler/PDFDoc.cc +++ b/poppler/PDFDoc.cc @@ -707,35 +707,44 @@ int PDFDoc::saveAs(GooString *name, PDFWriteMode mode) { int PDFDoc::saveAs(OutStream *outStr, PDFWriteMode mode) { - // we don't support files with Encrypt at the moment + // find if we have updated objects + GBool updated = gFalse; + for(int i=0; i<xref->getNumObjects(); i++) { + if (xref->getEntry(i)->updated) { + updated = gTrue; + break; + } + } + + // we don't support rewriting files with Encrypt at the moment Object obj; xref->getTrailerDict()->getDict()->lookupNF("Encrypt", &obj); if (!obj.isNull()) { obj.free(); - return errEncrypted; + if (!updated && mode == writeStandard) { + // simply copy the original file + saveWithoutChangesAs (outStr); + } else { + return errEncrypted; + } } - obj.free(); + else + { + obj.free(); - if (mode == writeForceRewrite) { - saveCompleteRewrite(outStr); - } else if (mode == writeForceIncremental) { - saveIncrementalUpdate(outStr); - } else { // let poppler decide - // find if we have updated objects - GBool updated = gFalse; - for(int i=0; i<xref->getNumObjects(); i++) { - if (xref->getEntry(i)->updated) { - updated = gTrue; - break; + if (mode == writeForceRewrite) { + saveCompleteRewrite(outStr); + } else if (mode == writeForceIncremental) { + saveIncrementalUpdate(outStr); + } else { // let poppler decide + if(updated) { + saveIncrementalUpdate(outStr); + } else { + // simply copy the original file + saveWithoutChangesAs (outStr); } } - if(updated) { - saveIncrementalUpdate(outStr); - } else { - // simply copy the original file - saveWithoutChangesAs (outStr); - } } return errNone; _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
