| Index: core/src/fpdfdoc/doc_form.cpp
|
| diff --git a/core/src/fpdfdoc/doc_form.cpp b/core/src/fpdfdoc/doc_form.cpp
|
| index 460a44a7dffea28731e6dad33d3796e7f7429e46..9252e073e047c53ead4c333cbb9904cee2110fc7 100644
|
| --- a/core/src/fpdfdoc/doc_form.cpp
|
| +++ b/core/src/fpdfdoc/doc_form.cpp
|
| @@ -8,8 +8,35 @@
|
| #include "core/src/fpdfdoc/doc_utils.h"
|
| #include "third_party/base/stl_util.h"
|
|
|
| +namespace {
|
| +
|
| const int nMaxRecursion = 32;
|
|
|
| +const struct SupportFieldEncoding {
|
| + const FX_CHAR* m_name;
|
| + FX_WORD m_codePage;
|
| +} g_fieldEncoding[] = {
|
| + {"BigFive", 950},
|
| + {"GBK", 936},
|
| + {"Shift-JIS", 932},
|
| + {"UHC", 949},
|
| +};
|
| +
|
| +CFX_WideString FPDFDOC_FDF_GetFieldValue(const CPDF_Dictionary& pFieldDict,
|
| + const CFX_ByteString& bsEncoding) {
|
| + const CFX_ByteString csBValue = pFieldDict.GetStringBy("V");
|
| + for (const auto& encoding : g_fieldEncoding) {
|
| + if (bsEncoding == encoding.m_name)
|
| + return CFX_WideString::FromCodePage(csBValue, encoding.m_codePage);
|
| + }
|
| + CFX_ByteString csTemp = csBValue.Left(2);
|
| + if (csTemp == "\xFF\xFE" || csTemp == "\xFE\xFF")
|
| + return PDF_DecodeText(csBValue);
|
| + return CFX_WideString::FromLocal(csBValue);
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| class CFieldNameExtractor {
|
| public:
|
| explicit CFieldNameExtractor(const CFX_WideString& full_name) {
|
| @@ -1088,39 +1115,7 @@ CFDF_Document* CPDF_InterForm::ExportToFDF(
|
| }
|
| return pDoc;
|
| }
|
| -const struct _SupportFieldEncoding {
|
| - const FX_CHAR* m_name;
|
| - int32_t m_codePage;
|
| -} g_fieldEncoding[] = {
|
| - {"BigFive", 950},
|
| - {"GBK", 936},
|
| - {"Shift-JIS", 932},
|
| - {"UHC", 949},
|
| -};
|
| -static void FPDFDOC_FDF_GetFieldValue(CPDF_Dictionary* pFieldDict,
|
| - CFX_WideString& csValue,
|
| - CFX_ByteString& bsEncoding) {
|
| - CFX_ByteString csBValue = pFieldDict->GetStringBy("V");
|
| - int32_t iCount = sizeof(g_fieldEncoding) / sizeof(g_fieldEncoding[0]);
|
| - int32_t i = 0;
|
| - for (; i < iCount; ++i)
|
| - if (bsEncoding == g_fieldEncoding[i].m_name) {
|
| - break;
|
| - }
|
| - if (i < iCount) {
|
| - CFX_CharMap* pCharMap =
|
| - CFX_CharMap::GetDefaultMapper(g_fieldEncoding[i].m_codePage);
|
| - FXSYS_assert(pCharMap);
|
| - csValue.ConvertFrom(csBValue, pCharMap);
|
| - return;
|
| - }
|
| - CFX_ByteString csTemp = csBValue.Left(2);
|
| - if (csTemp == "\xFF\xFE" || csTemp == "\xFE\xFF") {
|
| - csValue = PDF_DecodeText(csBValue);
|
| - } else {
|
| - csValue = CFX_WideString::FromLocal(csBValue);
|
| - }
|
| -}
|
| +
|
| void CPDF_InterForm::FDF_ImportField(CPDF_Dictionary* pFieldDict,
|
| const CFX_WideString& parent_name,
|
| FX_BOOL bNotify,
|
| @@ -1150,8 +1145,8 @@ void CPDF_InterForm::FDF_ImportField(CPDF_Dictionary* pFieldDict,
|
| if (!pField) {
|
| return;
|
| }
|
| - CFX_WideString csWValue;
|
| - FPDFDOC_FDF_GetFieldValue(pFieldDict, csWValue, m_bsEncoding);
|
| + CFX_WideString csWValue =
|
| + FPDFDOC_FDF_GetFieldValue(*pFieldDict, m_bsEncoding);
|
| int iType = pField->GetFieldType();
|
| if (bNotify && m_pFormNotify) {
|
| int iRet = 0;
|
|
|