[poppler] poppler/PDFDoc.cc
Albert Astals Cid
aacid at kemper.freedesktop.org
Sun Dec 4 08:30:25 PST 2011
poppler/PDFDoc.cc | 49 +++++++++++++++++++++++++++++--------------------
1 file changed, 29 insertions(+), 20 deletions(-)
New commits:
commit 63c942a45227ef28fb94ef4765171d9812fffafa
Author: Albert Astals Cid <aacid at kde.org>
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;
More information about the poppler
mailing list