| Index: core/src/fpdfdoc/doc_metadata.cpp
|
| diff --git a/core/src/fpdfdoc/doc_metadata.cpp b/core/src/fpdfdoc/doc_metadata.cpp
|
| index aeeb1d1f6089e408ff88d50f59814664cf26915f..b617eecf8711003f1eef5efe8394de70e1f0e25b 100644
|
| --- a/core/src/fpdfdoc/doc_metadata.cpp
|
| +++ b/core/src/fpdfdoc/doc_metadata.cpp
|
| @@ -7,142 +7,133 @@
|
| #include "../../include/fpdfdoc/fpdf_doc.h"
|
| #include "../../include/fxcrt/fx_xml.h"
|
| typedef struct _PDFDOC_METADATA {
|
| - CPDF_Document *m_pDoc;
|
| - CXML_Element *m_pXmlElmnt;
|
| - CXML_Element *m_pElmntRdf;
|
| - CFX_CMapByteStringToPtr *m_pStringMap;
|
| -} PDFDOC_METADATA, * PDFDOC_LPMETADATA;
|
| -typedef PDFDOC_METADATA const * PDFDOC_LPCMETADATA;
|
| + CPDF_Document* m_pDoc;
|
| + CXML_Element* m_pXmlElmnt;
|
| + CXML_Element* m_pElmntRdf;
|
| + CFX_CMapByteStringToPtr* m_pStringMap;
|
| +} PDFDOC_METADATA, *PDFDOC_LPMETADATA;
|
| +typedef PDFDOC_METADATA const* PDFDOC_LPCMETADATA;
|
| const FX_CHAR* const gs_FPDFDOC_Metadata_Titles[] = {
|
| - "Title", "title",
|
| - "Subject", "description",
|
| - "Author", "creator",
|
| - "Keywords", "Keywords",
|
| - "Producer", "Producer",
|
| - "Creator", "CreatorTool",
|
| - "CreationDate", "CreateDate",
|
| - "ModDate", "ModifyDate",
|
| - "MetadataDate", "MetadataDate"
|
| -};
|
| -CPDF_Metadata::CPDF_Metadata()
|
| -{
|
| - m_pData = FX_Alloc(PDFDOC_METADATA, 1);
|
| - CFX_CMapByteStringToPtr *&pStringMap = ((PDFDOC_LPMETADATA)m_pData)->m_pStringMap;
|
| - pStringMap = new CFX_CMapByteStringToPtr;
|
| - CFX_ByteString bstr;
|
| - for (int i = 0; i < 18; i += 2) {
|
| - bstr = gs_FPDFDOC_Metadata_Titles[i];
|
| - pStringMap->AddValue(bstr, (void*)gs_FPDFDOC_Metadata_Titles[i + 1]);
|
| - }
|
| -
|
| + "Title", "title", "Subject", "description", "Author",
|
| + "creator", "Keywords", "Keywords", "Producer", "Producer",
|
| + "Creator", "CreatorTool", "CreationDate", "CreateDate", "ModDate",
|
| + "ModifyDate", "MetadataDate", "MetadataDate"};
|
| +CPDF_Metadata::CPDF_Metadata() {
|
| + m_pData = FX_Alloc(PDFDOC_METADATA, 1);
|
| + CFX_CMapByteStringToPtr*& pStringMap =
|
| + ((PDFDOC_LPMETADATA)m_pData)->m_pStringMap;
|
| + pStringMap = new CFX_CMapByteStringToPtr;
|
| + CFX_ByteString bstr;
|
| + for (int i = 0; i < 18; i += 2) {
|
| + bstr = gs_FPDFDOC_Metadata_Titles[i];
|
| + pStringMap->AddValue(bstr, (void*)gs_FPDFDOC_Metadata_Titles[i + 1]);
|
| + }
|
| }
|
| -CPDF_Metadata::~CPDF_Metadata()
|
| -{
|
| - FXSYS_assert(m_pData != NULL);
|
| - CXML_Element *&p = ((PDFDOC_LPMETADATA)m_pData)->m_pXmlElmnt;
|
| - delete p;
|
| - CFX_CMapByteStringToPtr *pStringMap = ((PDFDOC_LPMETADATA)m_pData)->m_pStringMap;
|
| - if (pStringMap) {
|
| - pStringMap->RemoveAll();
|
| - delete pStringMap;
|
| - }
|
| - FX_Free(m_pData);
|
| +CPDF_Metadata::~CPDF_Metadata() {
|
| + FXSYS_assert(m_pData != NULL);
|
| + CXML_Element*& p = ((PDFDOC_LPMETADATA)m_pData)->m_pXmlElmnt;
|
| + delete p;
|
| + CFX_CMapByteStringToPtr* pStringMap =
|
| + ((PDFDOC_LPMETADATA)m_pData)->m_pStringMap;
|
| + if (pStringMap) {
|
| + pStringMap->RemoveAll();
|
| + delete pStringMap;
|
| + }
|
| + FX_Free(m_pData);
|
| }
|
| -void CPDF_Metadata::LoadDoc(CPDF_Document *pDoc)
|
| -{
|
| - FXSYS_assert(pDoc != NULL);
|
| - ((PDFDOC_LPMETADATA)m_pData)->m_pDoc = pDoc;
|
| - CPDF_Dictionary *pRoot = pDoc->GetRoot();
|
| - CPDF_Stream *pStream = pRoot->GetStream(FX_BSTRC("Metadata"));
|
| - if (!pStream) {
|
| - return;
|
| - }
|
| - CPDF_StreamAcc acc;
|
| - acc.LoadAllData(pStream, FALSE);
|
| - int size = acc.GetSize();
|
| - const uint8_t* pBuf = acc.GetData();
|
| - CXML_Element *&pXmlElmnt = ((PDFDOC_LPMETADATA)m_pData)->m_pXmlElmnt;
|
| - pXmlElmnt = CXML_Element::Parse(pBuf, size);
|
| - if (!pXmlElmnt) {
|
| - return;
|
| - }
|
| - CXML_Element *&pElmntRdf = ((PDFDOC_LPMETADATA)m_pData)->m_pElmntRdf;
|
| - if (pXmlElmnt->GetTagName() == FX_BSTRC("RDF")) {
|
| - pElmntRdf = pXmlElmnt;
|
| - } else {
|
| - pElmntRdf = pXmlElmnt->GetElement(NULL, FX_BSTRC("RDF"));
|
| - }
|
| +void CPDF_Metadata::LoadDoc(CPDF_Document* pDoc) {
|
| + FXSYS_assert(pDoc != NULL);
|
| + ((PDFDOC_LPMETADATA)m_pData)->m_pDoc = pDoc;
|
| + CPDF_Dictionary* pRoot = pDoc->GetRoot();
|
| + CPDF_Stream* pStream = pRoot->GetStream(FX_BSTRC("Metadata"));
|
| + if (!pStream) {
|
| + return;
|
| + }
|
| + CPDF_StreamAcc acc;
|
| + acc.LoadAllData(pStream, FALSE);
|
| + int size = acc.GetSize();
|
| + const uint8_t* pBuf = acc.GetData();
|
| + CXML_Element*& pXmlElmnt = ((PDFDOC_LPMETADATA)m_pData)->m_pXmlElmnt;
|
| + pXmlElmnt = CXML_Element::Parse(pBuf, size);
|
| + if (!pXmlElmnt) {
|
| + return;
|
| + }
|
| + CXML_Element*& pElmntRdf = ((PDFDOC_LPMETADATA)m_pData)->m_pElmntRdf;
|
| + if (pXmlElmnt->GetTagName() == FX_BSTRC("RDF")) {
|
| + pElmntRdf = pXmlElmnt;
|
| + } else {
|
| + pElmntRdf = pXmlElmnt->GetElement(NULL, FX_BSTRC("RDF"));
|
| + }
|
| }
|
| -int32_t CPDF_Metadata::GetString(const CFX_ByteStringC& bsItem, CFX_WideString &wsStr)
|
| -{
|
| - if (!((PDFDOC_LPMETADATA)m_pData)->m_pXmlElmnt) {
|
| - return -1;
|
| - }
|
| - if (!((PDFDOC_LPMETADATA)m_pData)->m_pStringMap) {
|
| - return -1;
|
| +int32_t CPDF_Metadata::GetString(const CFX_ByteStringC& bsItem,
|
| + CFX_WideString& wsStr) {
|
| + if (!((PDFDOC_LPMETADATA)m_pData)->m_pXmlElmnt) {
|
| + return -1;
|
| + }
|
| + if (!((PDFDOC_LPMETADATA)m_pData)->m_pStringMap) {
|
| + return -1;
|
| + }
|
| + void* szTag;
|
| + if (!((PDFDOC_LPMETADATA)m_pData)->m_pStringMap->Lookup(bsItem, szTag)) {
|
| + return -1;
|
| + }
|
| + CFX_ByteString bsTag = (const FX_CHAR*)szTag;
|
| + wsStr = L"";
|
| + CXML_Element* pElmntRdf = ((PDFDOC_LPMETADATA)m_pData)->m_pElmntRdf;
|
| + if (!pElmntRdf) {
|
| + return -1;
|
| + }
|
| + int nChild = pElmntRdf->CountChildren();
|
| + for (int i = 0; i < nChild; i++) {
|
| + CXML_Element* pTag =
|
| + pElmntRdf->GetElement(NULL, FX_BSTRC("Description"), i);
|
| + if (!pTag) {
|
| + continue;
|
| }
|
| - void *szTag;
|
| - if (!((PDFDOC_LPMETADATA)m_pData)->m_pStringMap->Lookup(bsItem, szTag)) {
|
| - return -1;
|
| + if (bsItem == FX_BSTRC("Title") || bsItem == FX_BSTRC("Subject")) {
|
| + CXML_Element* pElmnt = pTag->GetElement(NULL, bsTag);
|
| + if (!pElmnt) {
|
| + continue;
|
| + }
|
| + pElmnt = pElmnt->GetElement(NULL, FX_BSTRC("Alt"));
|
| + if (!pElmnt) {
|
| + continue;
|
| + }
|
| + pElmnt = pElmnt->GetElement(NULL, FX_BSTRC("li"));
|
| + if (!pElmnt) {
|
| + continue;
|
| + }
|
| + wsStr = pElmnt->GetContent(0);
|
| + return wsStr.GetLength();
|
| }
|
| - CFX_ByteString bsTag = (const FX_CHAR*)szTag;
|
| - wsStr = L"";
|
| - CXML_Element *pElmntRdf = ((PDFDOC_LPMETADATA)m_pData)->m_pElmntRdf;
|
| - if (!pElmntRdf) {
|
| - return -1;
|
| + if (bsItem == FX_BSTRC("Author")) {
|
| + CXML_Element* pElmnt = pTag->GetElement(NULL, bsTag);
|
| + if (!pElmnt) {
|
| + continue;
|
| + }
|
| + pElmnt = pElmnt->GetElement(NULL, FX_BSTRC("Seq"));
|
| + if (!pElmnt) {
|
| + continue;
|
| + }
|
| + pElmnt = pElmnt->GetElement(NULL, FX_BSTRC("li"));
|
| + if (!pElmnt) {
|
| + continue;
|
| + }
|
| + wsStr = pElmnt->GetContent(0);
|
| + return wsStr.GetLength();
|
| }
|
| - int nChild = pElmntRdf->CountChildren();
|
| - for (int i = 0; i < nChild; i++) {
|
| - CXML_Element *pTag = pElmntRdf->GetElement(NULL, FX_BSTRC("Description"), i);
|
| - if (!pTag) {
|
| - continue;
|
| - }
|
| - if (bsItem == FX_BSTRC("Title") || bsItem == FX_BSTRC("Subject")) {
|
| - CXML_Element *pElmnt = pTag->GetElement(NULL, bsTag);
|
| - if (!pElmnt) {
|
| - continue;
|
| - }
|
| - pElmnt = pElmnt->GetElement(NULL, FX_BSTRC("Alt"));
|
| - if (!pElmnt) {
|
| - continue;
|
| - }
|
| - pElmnt = pElmnt->GetElement(NULL, FX_BSTRC("li"));
|
| - if (!pElmnt) {
|
| - continue;
|
| - }
|
| - wsStr = pElmnt->GetContent(0);
|
| - return wsStr.GetLength();
|
| - }
|
| - if (bsItem == FX_BSTRC("Author")) {
|
| - CXML_Element *pElmnt = pTag->GetElement(NULL, bsTag);
|
| - if (!pElmnt) {
|
| - continue;
|
| - }
|
| - pElmnt = pElmnt->GetElement(NULL, FX_BSTRC("Seq"));
|
| - if (!pElmnt) {
|
| - continue;
|
| - }
|
| - pElmnt = pElmnt->GetElement(NULL, FX_BSTRC("li"));
|
| - if (!pElmnt) {
|
| - continue;
|
| - }
|
| - wsStr = pElmnt->GetContent(0);
|
| - return wsStr.GetLength();
|
| - }
|
| - CXML_Element *pElmnt = pTag->GetElement(NULL, bsTag);
|
| - if (!pElmnt) {
|
| - continue;
|
| - }
|
| - wsStr = pElmnt->GetContent(0);
|
| - return wsStr.GetLength();
|
| + CXML_Element* pElmnt = pTag->GetElement(NULL, bsTag);
|
| + if (!pElmnt) {
|
| + continue;
|
| }
|
| - return -1;
|
| + wsStr = pElmnt->GetContent(0);
|
| + return wsStr.GetLength();
|
| + }
|
| + return -1;
|
| }
|
| -CXML_Element* CPDF_Metadata::GetRoot() const
|
| -{
|
| - return ((PDFDOC_LPMETADATA)m_pData)->m_pXmlElmnt;
|
| +CXML_Element* CPDF_Metadata::GetRoot() const {
|
| + return ((PDFDOC_LPMETADATA)m_pData)->m_pXmlElmnt;
|
| }
|
| -CXML_Element* CPDF_Metadata::GetRDF() const
|
| -{
|
| - return ((PDFDOC_LPMETADATA)m_pData)->m_pElmntRdf;
|
| +CXML_Element* CPDF_Metadata::GetRDF() const {
|
| + return ((PDFDOC_LPMETADATA)m_pData)->m_pElmntRdf;
|
| }
|
|
|