Hi, Georg.

I'm not a developer of PoDoFo and don't know any details lying deep there.
You may just take a look at the src/base/PdfObject.h and
src/base/PdfVariant.h to understand the difference between these two
functions:

    inline const PdfReference & Reference() const;
    inline const PdfReference & GetReference() const;

and their implementations:

const PdfReference & PdfObject::Reference() const
{
    return m_reference;
}

const PdfReference & PdfVariant::GetReference() const
{
    DelayedLoad();

    if( !IsReference() )
    {
        PODOFO_RAISE_ERROR( ePdfError_InvalidDataType );
    }

    // Do not change this to an reinterpret_cast
    // We need a c-style casts here to avoid crashes
    // because a reinterpret_cast might point to a different position.
    return *((PdfReference*)m_Data.pData);
}

Personally, I didn't have a need to find object by its object and generation
numbers, but I had to obtain 'em from an existing one. There is a chance
that
this piece of code to get a specific XObject by its name will be useful:

PdfObject *xobj;
int nobj, ngen;

xobj = get_xobject(&xobj_name, (PdfCanvas *)page);
/* Is object a reference? */
if (xobj->IsReference())
    xobj = doc->GetObjects().GetObject(xobj->GetReference());
ngen = xobj->Reference().GenerationNumber();
nobj = xobj->Reference().ObjectNumber();
/* ... */

static PdfObject *get_xobject(PdfName *xobjname, PdfCanvas *pPage)
{
    PdfObject *pResources = pPage->GetResources();
    PdfObject *xobj_dict;

    if (pResources != NULL &&
        pResources->GetDictionary().HasKey(PdfName("XObject"))) {
        xobj_dict = pResources->GetIndirectKey(PdfName("XObject"));
        if (xobj_dict != NULL && xobj_dict->IsDictionary()) {
            return xobj_dict->GetIndirectKey(*xobjname);
        }
    }
    return NULL;
}


Regards,

- Dmitry

On Fri, Jan 12, 2018 at 10:35 PM, Georg Funk <georgf...@hotmail.de> wrote:

> Dear podofo-developers,
>
> could you please describe the difference between PdfObject::GetReference()
> and PdfObject::Reference()?
> I need a way to access PdfObjects from within a PfVecObjects vector by
> their object and generation number. Further I need a function to follow
> indirect references of an object.
> Can I use the above mentioned methods for these purposes?
>
> Thank you in advance!
>
> Regards,
> Georg
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Podofo-users mailing list
> Podofo-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/podofo-users
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Podofo-users mailing list
Podofo-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/podofo-users

Reply via email to