Ejemplo n.º 1
0
        public string HPDF_Dict_GetKeyByObj(HPDF_Object obj)
        {
            for (int i = 0; i < List.Count; i++)
            {
                var element = List[i];
                var header  = element.Value.Header;

                if (header.ObjClass == HPDF_Obj_Header.HPDF_OCLASS_PROXY)
                {
                    HPDF_Proxy p = new HPDF_Proxy(element.Value);

                    if (p.Obj == obj)
                    {
                        return(element.Key);
                    }
                }
                else
                {
                    if (element.Value == obj)
                    {
                        return(element.Key);
                    }
                }
            }

            return(null);
        }
Ejemplo n.º 2
0
        public void HPDF_Xref_Add(HPDF_Object obj)
        {
            LibLogger.Debug(this.GetType(), "HPDF_Xref_Add");

            if (obj == null)
            {
                Error = new HPDF_Error("HPDF_Xref_Add", HPDF_Error.HPDF_INVALID_OBJECT, 0);
            }

            var header = obj.Header;

            if ((header.ObjId & HPDF_Obj_Header.HPDF_OTYPE_DIRECT) != 0 ||
                (header.ObjId & HPDF_Obj_Header.HPDF_OTYPE_INDIRECT) != 0)
            {
                Error = new HPDF_Error("HPDF_Xref_Add", HPDF_Error.HPDF_INVALID_OBJECT, 0);
            }

            if (Entries.Count >= HPDF_Consts.HPDF_LIMIT_MAX_XREF_ELEMENT)
            {
                Error = new HPDF_Error("HPDF_Xref_Add", HPDF_Error.HPDF_XREF_COUNT_ERR, 0);
            }

            var entry = new HPDF_Xref_Entry
            {
                EntryTyp   = HPDF_IN_USE_ENTRY,
                ByteOffset = 0,
                GenNo      = 0,
                Obj        = obj
            };

            Entries.Add(entry);

            header.ObjId = (uint)(StartOffset + Entries.Count - 1 + (int)HPDF_Obj_Header.HPDF_OTYPE_INDIRECT);
            header.GenNo = entry.GenNo;
        }
Ejemplo n.º 3
0
        public HPDF_Object HPDF_Dict_GetItem(string key, uint objClass)
        {
            LibLogger.Debug(this.GetType(), $"HPDF_Dict_GetItem key {key} objClass {objClass}");

            var         element = GetElement(key);
            HPDF_Object obj     = new HPDF_Object();

            if (element != null && key == element.Key)
            {
                var header = element.Value.Header;

                if (header.ObjClass == HPDF_Obj_Header.HPDF_OCLASS_PROXY)
                {
                    HPDF_Proxy p = new HPDF_Proxy(element.Value);
                    header = p.Header;
                    obj    = p.Obj;
                }
                else
                {
                    obj = element.Value;
                }

                if ((Header.ObjClass & HPDF_Obj_Header.HPDF_OCLASS_ANY) != objClass)
                {
                    Error = new HPDF_Error("HPDF_Dict_GetItem", HPDF_Error.HPDF_DICT_ITEM_UNEXPECTED_TYPE, 0);
                }
            }

            return(obj);
        }
Ejemplo n.º 4
0
        public void HPDF_Dict_Add(string key, HPDF_Object obj)
        {
            LibLogger.Debug(this.GetType(), $"HPDF_Dict_Add key {key} obj.Header.ObjId {obj.Header.ObjId}");

            HPDF_Obj_Header  header = obj.Header;
            HPDF_DictElement element;

            if ((header.ObjId & HPDF_Obj_Header.HPDF_OTYPE_DIRECT) != 0)
            {
                Error = new HPDF_Error("HPDF_Dict_Add line - invalid object", HPDF_Error.HPDF_INVALID_OBJECT, 0);
            }

            if (key == null)
            {
                Error = new HPDF_Error("HPDF_Dict_Add line - invalid object", HPDF_Error.HPDF_INVALID_OBJECT, 0);
            }

            if (List.Count >= HPDF_Consts.HPDF_LIMIT_MAX_DICT_ELEMENT)
            {
                LibLogger.Debug(this.GetType(), " HPDF_Dict_Add exceed limitatin of dict count(" + HPDF_Consts.HPDF_LIMIT_MAX_DICT_ELEMENT.ToString() + ")");
                Error = new HPDF_Error("HPDF_Dict_Add line - invalid object", HPDF_Error.HPDF_DICT_COUNT_ERR, 0);
            }

            /* check whether there is an object which has same name */
            element = GetElement(key);

            if (element != null)
            {
                element.Value = null;
            }
            else
            {
                element = new HPDF_DictElement
                {
                    Key   = key,
                    Value = null
                };

                List.Add(element);
            }

            if ((header.ObjId & HPDF_Obj_Header.HPDF_OTYPE_INDIRECT) != 0)
            {
                var proxy = new HPDF_Proxy(obj);
                element.Value       = proxy;
                proxy.Header.ObjId |= HPDF_Obj_Header.HPDF_OTYPE_DIRECT;
            }
            else
            {
                element.Value = obj;
                header.ObjId |= HPDF_Obj_Header.HPDF_OTYPE_DIRECT;
            }
        }
Ejemplo n.º 5
0
        public void HPDF_Obj_WriteValue(HPDF_Object obj, HPDF_Encrypt e)
        {
            LibLogger.Debug(this.GetType(), "HPDF_Obj_WriteValue");

            HPDF_Obj_Header header = obj.Header;
            var             clas   = header.ObjClass & HPDF_Obj_Header.HPDF_OCLASS_ANY;

            switch (clas)
            {
            case HPDF_Obj_Header.HPDF_OCLASS_NAME:
                HPDF_Name_Write(obj as HPDF_Name);
                break;

            case HPDF_Obj_Header.HPDF_OCLASS_NUMBER:
                HPDF_Number_Write(obj as HPDF_Number);
                break;

            case HPDF_Obj_Header.HPDF_OCLASS_REAL:
                HPDF_Real_Write(obj as HPDF_Real);
                break;

            case HPDF_Obj_Header.HPDF_OCLASS_STRING:
                HPDF_String_Write(obj as HPDF_String, e);
                break;

            case HPDF_Obj_Header.HPDF_OCLASS_BINARY:
                HPDF_Binary_Write(obj as HPDF_Binary, e);
                break;

            case HPDF_Obj_Header.HPDF_OCLASS_ARRAY:
                HPDF_Array_Write(obj as HPDF_Array, e);
                break;

            case HPDF_Obj_Header.HPDF_OCLASS_DICT:
                HPDF_Dict_Write(obj as HPDF_Dict, e);
                break;

            case HPDF_Obj_Header.HPDF_OCLASS_BOOLEAN:
                HPDF_Boolean_Write(obj as HPDF_Boolean);
                break;

            case HPDF_Obj_Header.HPDF_OCLASS_NULL:
                HPDF_Stream_WriteStr("null");
                break;

            default:
                Error = new HPDF_Error("HPDF_Obj_WriteValue", HPDF_Error.HPDF_ERR_UNKNOWN_CLASS, 0);
                break;
            }
        }
Ejemplo n.º 6
0
 public HPDF_Proxy(HPDF_Object obj)
 {
     Header.ObjClass = HPDF_Obj_Header.HPDF_OCLASS_PROXY;
     Obj             = obj;
 }
Ejemplo n.º 7
0
 private void HPDF_Obj_Write(HPDF_Object obj, HPDF_Encrypt e)
 {
     LibLogger.Debug(this.GetType(), "HPDF_Obj_Write");
 }