Hi,

In PdfParser.cpp in function PdfParser::ReadObjectsInternal():

pObject->ParseFile( m_pEncrypt );

*if* (m_pEncrypt && pObject->IsDictionary()) {

PdfObject* pObjType = pObject->GetDictionary().GetKey( PdfName::KeyType );

*if*( pObjType && pObjType->IsName() && pObjType->GetName() == "XRef" ) {

// XRef is never encrypted

*delete* pObject;

pObject = *new* PdfParserObject( m_vecObjects, m_device, m_buffer, m_offsets
[i].lOffset );

pObject->SetLoadOnDemand( m_bLoadOnDemand );

pObject->ParseFile( *NULL* );

}

}


This code is executed for each object in cross reference table. If
encryption is enabled so m_pEncrypt is non-null then is called
pObject->IsDictionary() which triggers immediate parsing of each object. In
pdf without encryption is each object parsed only on first access (maybe
with few exceptions).

I think there are better options how to distinguish whether is current
object xref. For example by comparing object number with set of object
numbers of xref objects.
_______________________________________________
Podofo-users mailing list
Podofo-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/podofo-users

Reply via email to