| Index: fpdfsdk/javascript/Document.cpp
|
| diff --git a/fpdfsdk/javascript/Document.cpp b/fpdfsdk/javascript/Document.cpp
|
| index 40e13125300627163b261402160b98226a4903ef..ea77e1cfad46fb660f450c43b88d73d477a7a6cb 100644
|
| --- a/fpdfsdk/javascript/Document.cpp
|
| +++ b/fpdfsdk/javascript/Document.cpp
|
| @@ -749,6 +749,12 @@ FX_BOOL Document::author(IJS_Context* cc,
|
| FX_BOOL Document::info(IJS_Context* cc,
|
| CJS_PropValue& vp,
|
| CFX_WideString& sError) {
|
| + if (vp.IsSetting()) {
|
| + CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
|
| + return FALSE;
|
| + }
|
| +
|
| CPDF_Dictionary* pDictionary = m_pDocument->GetPDFDocument()->GetInfo();
|
| if (!pDictionary)
|
| return FALSE;
|
| @@ -763,38 +769,36 @@ FX_BOOL Document::info(IJS_Context* cc,
|
| CFX_WideString cwModDate = pDictionary->GetUnicodeTextBy("ModDate");
|
| CFX_WideString cwTrapped = pDictionary->GetUnicodeTextBy("Trapped");
|
|
|
| + CJS_Context* pContext = (CJS_Context*)cc;
|
| + CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| + v8::Local<v8::Object> pObj =
|
| + FXJS_NewFxDynamicObj(pRuntime->GetIsolate(), pRuntime, -1);
|
| +
|
| v8::Isolate* isolate = GetIsolate(cc);
|
| - if (vp.IsGetting()) {
|
| - CJS_Context* pContext = (CJS_Context*)cc;
|
| - CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
| - v8::Local<v8::Object> pObj =
|
| - FXJS_NewFxDynamicObj(pRuntime->GetIsolate(), pRuntime, -1);
|
| - FXJS_PutObjectString(isolate, pObj, L"Author", cwAuthor);
|
| - FXJS_PutObjectString(isolate, pObj, L"Title", cwTitle);
|
| - FXJS_PutObjectString(isolate, pObj, L"Subject", cwSubject);
|
| - FXJS_PutObjectString(isolate, pObj, L"Keywords", cwKeywords);
|
| - FXJS_PutObjectString(isolate, pObj, L"Creator", cwCreator);
|
| - FXJS_PutObjectString(isolate, pObj, L"Producer", cwProducer);
|
| - FXJS_PutObjectString(isolate, pObj, L"CreationDate", cwCreationDate);
|
| - FXJS_PutObjectString(isolate, pObj, L"ModDate", cwModDate);
|
| - FXJS_PutObjectString(isolate, pObj, L"Trapped", cwTrapped);
|
| -
|
| - // It's to be compatible to non-standard info dictionary.
|
| - for (const auto& it : *pDictionary) {
|
| - const CFX_ByteString& bsKey = it.first;
|
| - CPDF_Object* pValueObj = it.second;
|
| - CFX_WideString wsKey = CFX_WideString::FromUTF8(bsKey.AsStringC());
|
| - if (pValueObj->IsString() || pValueObj->IsName()) {
|
| - FXJS_PutObjectString(isolate, pObj, wsKey, pValueObj->GetUnicodeText());
|
| - } else if (pValueObj->IsNumber()) {
|
| - FXJS_PutObjectNumber(isolate, pObj, wsKey,
|
| - (float)pValueObj->GetNumber());
|
| - } else if (pValueObj->IsBoolean()) {
|
| - FXJS_PutObjectBoolean(isolate, pObj, wsKey, !!pValueObj->GetInteger());
|
| - }
|
| + FXJS_PutObjectString(isolate, pObj, L"Author", cwAuthor);
|
| + FXJS_PutObjectString(isolate, pObj, L"Title", cwTitle);
|
| + FXJS_PutObjectString(isolate, pObj, L"Subject", cwSubject);
|
| + FXJS_PutObjectString(isolate, pObj, L"Keywords", cwKeywords);
|
| + FXJS_PutObjectString(isolate, pObj, L"Creator", cwCreator);
|
| + FXJS_PutObjectString(isolate, pObj, L"Producer", cwProducer);
|
| + FXJS_PutObjectString(isolate, pObj, L"CreationDate", cwCreationDate);
|
| + FXJS_PutObjectString(isolate, pObj, L"ModDate", cwModDate);
|
| + FXJS_PutObjectString(isolate, pObj, L"Trapped", cwTrapped);
|
| +
|
| + // It's to be compatible to non-standard info dictionary.
|
| + for (const auto& it : *pDictionary) {
|
| + const CFX_ByteString& bsKey = it.first;
|
| + CPDF_Object* pValueObj = it.second;
|
| + CFX_WideString wsKey = CFX_WideString::FromUTF8(bsKey.AsStringC());
|
| + if (pValueObj->IsString() || pValueObj->IsName()) {
|
| + FXJS_PutObjectString(isolate, pObj, wsKey, pValueObj->GetUnicodeText());
|
| + } else if (pValueObj->IsNumber()) {
|
| + FXJS_PutObjectNumber(isolate, pObj, wsKey, (float)pValueObj->GetNumber());
|
| + } else if (pValueObj->IsBoolean()) {
|
| + FXJS_PutObjectBoolean(isolate, pObj, wsKey, !!pValueObj->GetInteger());
|
| }
|
| - vp << pObj;
|
| }
|
| + vp << pObj;
|
| return TRUE;
|
| }
|
|
|
|
|