CFX_WideString GetFullName(CPDF_Dictionary* pFieldDict) { CFX_WideString full_name; CPDF_Dictionary* pLevel = pFieldDict; while (pLevel) { CFX_WideString short_name = pLevel->GetUnicodeTextBy("T"); if (short_name != L"") { if (full_name == L"") { full_name = short_name; } else { full_name = short_name + L"." + full_name; } } pLevel = pLevel->GetDictBy("Parent"); } return full_name; }
DLLEXPORT unsigned long STDCALL FPDF_GetMetaText(FPDF_DOCUMENT doc, FPDF_BYTESTRING tag, void* buffer, unsigned long buflen) { if (!tag) return 0; CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(doc); if (!pDoc) return 0; CPDF_Dictionary* pInfo = pDoc->GetInfo(); if (!pInfo) return 0; CFX_WideString text = pInfo->GetUnicodeTextBy(tag); // Use UTF-16LE encoding CFX_ByteString encodedText = text.UTF16LE_Encode(); unsigned long len = encodedText.GetLength(); if (buffer && buflen >= len) { FXSYS_memcpy(buffer, encodedText.c_str(), len); } return len; }