diff --git a/include/libgourou_common.h b/include/libgourou_common.h index d14b054..5af33ac 100644 --- a/include/libgourou_common.h +++ b/include/libgourou_common.h @@ -68,6 +68,7 @@ namespace gourou enum DOWNLOAD_ERROR { DW_NO_ITEM = 0x1200, + DW_NO_EBX_HANDLER, }; enum SIGNIN_ERROR { diff --git a/src/libgourou.cpp b/src/libgourou.cpp index f336b96..bbbe447 100644 --- a/src/libgourou.cpp +++ b/src/libgourou.cpp @@ -611,7 +611,8 @@ namespace gourou else if (res == PDF) { uPDFParser::Parser parser; - + bool EBXHandlerFound = false; + try { GOUROU_LOG(DEBUG, "Parse PDF"); @@ -631,6 +632,7 @@ namespace gourou // Update EBX_HANDLER with rights if ((*it)->hasKey("Filter") && (**it)["Filter"]->str() == "/EBX_HANDLER") { + EBXHandlerFound = true; uPDFParser::Object* ebx = (*it)->clone(); (*ebx)["ADEPT_ID"] = new uPDFParser::String(item->getResource()); (*ebx)["EBX_BOOKID"] = new uPDFParser::String(item->getResource()); @@ -642,7 +644,12 @@ namespace gourou } } - parser.write(path, true); + if (EBXHandlerFound) + parser.write(path, true); + else + { + EXCEPTION(DW_NO_EBX_HANDLER, "EBX_HANDLER not found"); + } } return res;