void CPDF_StreamContentParser::EndString() { CPDF_String *pObj = FX_NEW CPDF_String(m_StringBuf.GetByteString()); if (!SetToCurObj(pObj)) { pObj->Release(); } }
void CPDF_StreamContentParser::EndHexString() { CPDF_String *pObj = FX_NEW CPDF_String(_FPDF_ByteStringFromHex(m_StringBuf), TRUE); if (!SetToCurObj(pObj)) { pObj->Release(); } }
DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_CreateNewDocument() { CPDF_Document* pDoc = FX_NEW CPDF_Document; if (!pDoc) return NULL; pDoc->CreateNewDoc(); time_t currentTime; CFX_ByteString DateStr; if(FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS)) { if ( -1 != time( ¤tTime ) ) { tm * pTM = localtime( ¤tTime ); if ( pTM ) { DateStr.Format( "D:%04d%02d%02d%02d%02d%02d", pTM->tm_year+1900, pTM->tm_mon+1, pTM->tm_mday, pTM->tm_hour, pTM->tm_min, pTM->tm_sec ); } } } CPDF_Dictionary* pInfoDict = NULL; pInfoDict = pDoc->GetInfo(); if (pInfoDict) { if(FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS)) pInfoDict->SetAt("CreationDate", new CPDF_String(DateStr)); pInfoDict->SetAt("Creator",FX_NEW CPDF_String(L"PDFium")); } return pDoc; }
void CPDF_Dictionary::SetAtString(FX_BSTR key, const CFX_ByteString& str) { SetAt(key, FX_NEW CPDF_String(str)); }
void CPDF_Array::AddString(const CFX_ByteString& str) { ASSERT(this != NULL && m_Type == PDFOBJ_ARRAY); Add(FX_NEW CPDF_String(str)); }
CPDF_Object* CPDF_Object::CloneInternal(FX_BOOL bDirect, CFX_MapPtrToPtr* visited) const { if (this == NULL) { return NULL; } switch (m_Type) { case PDFOBJ_BOOLEAN: return FX_NEW CPDF_Boolean(((CPDF_Boolean*)this)->m_bValue); case PDFOBJ_NUMBER: return FX_NEW CPDF_Number(((CPDF_Number*)this)->m_bInteger, &((CPDF_Number*)this)->m_Integer); case PDFOBJ_STRING: return FX_NEW CPDF_String(((CPDF_String*)this)->m_String, ((CPDF_String*)this)->IsHex()); case PDFOBJ_NAME: return FX_NEW CPDF_Name(((CPDF_Name*)this)->m_Name); case PDFOBJ_ARRAY: { CPDF_Array* pCopy = FX_NEW CPDF_Array(); CPDF_Array* pThis = (CPDF_Array*)this; int n = pThis->GetCount(); for (int i = 0; i < n; i ++) { CPDF_Object* value = (CPDF_Object*)pThis->m_Objects.GetAt(i); pCopy->m_Objects.Add(value->CloneInternal(bDirect, visited)); } return pCopy; } case PDFOBJ_DICTIONARY: { CPDF_Dictionary* pCopy = FX_NEW CPDF_Dictionary(); CPDF_Dictionary* pThis = (CPDF_Dictionary*)this; FX_POSITION pos = pThis->m_Map.GetStartPosition(); while (pos) { CFX_ByteString key; CPDF_Object* value; pThis->m_Map.GetNextAssoc(pos, key, (void*&)value); pCopy->m_Map.SetAt(key, value->CloneInternal(bDirect, visited)); } return pCopy; } case PDFOBJ_NULL: { return FX_NEW CPDF_Null; } case PDFOBJ_STREAM: { CPDF_Stream* pThis = (CPDF_Stream*)this; CPDF_StreamAcc acc; acc.LoadAllData(pThis, TRUE); FX_DWORD streamSize = acc.GetSize(); CPDF_Stream* pObj = FX_NEW CPDF_Stream(acc.DetachData(), streamSize, (CPDF_Dictionary*)((CPDF_Object*)pThis->GetDict())->CloneInternal(bDirect, visited)); return pObj; } case PDFOBJ_REFERENCE: { CPDF_Reference* pRef = (CPDF_Reference*)this; FX_DWORD obj_num = pRef->m_RefObjNum; if (bDirect && !visited->GetValueAt((void*)(FX_UINTPTR)obj_num)) { visited->SetAt((void*)(FX_UINTPTR)obj_num, (void*)1); CPDF_Object* ret = pRef->GetDirect()->CloneInternal(TRUE, visited); return ret; } else { return FX_NEW CPDF_Reference(pRef->m_pObjList, obj_num); } } } return NULL; }