CFX_ByteString CPDF_PageContentGenerate::RealizeResource( CPDF_Object* pResourceObj, const FX_CHAR* szType) { if (m_pPage->m_pResources == NULL) { m_pPage->m_pResources = new CPDF_Dictionary; int objnum = m_pDocument->AddIndirectObject(m_pPage->m_pResources); m_pPage->m_pFormDict->SetAtReference("Resources", m_pDocument, objnum); } CPDF_Dictionary* pResList = m_pPage->m_pResources->GetDict(szType); if (pResList == NULL) { pResList = new CPDF_Dictionary; m_pPage->m_pResources->SetAt(szType, pResList); } m_pDocument->AddIndirectObject(pResourceObj); CFX_ByteString name; int idnum = 1; while (1) { name.Format("FX%c%d", szType[0], idnum); if (!pResList->KeyExist(name)) { break; } idnum++; } pResList->AddReference(name, m_pDocument, pResourceObj->GetObjNum()); return name; }