public HPDF_Xref(int offset = 0) { LibLogger.Debug(this.GetType(), $"HPDF_Xref offset {offset}"); HPDF_Xref_Entry newEntry; StartOffset = offset; Entries = new List <HPDF_Xref_Entry>(); Addr = 0; if (StartOffset == 0) { newEntry = new HPDF_Xref_Entry { EntryTyp = HPDF_FREE_ENTRY, ByteOffset = 0, GenNo = HPDF_Consts.HPDF_MAX_GENERATION_NUM, Obj = null }; Entries.Add(newEntry); } Trailer = new HPDF_Dict(); Error = new HPDF_Error(); }
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; }
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); }
public HPDF_Xref_Entry HPDF_Xref_GetEntryByObjectId(uint objId) { LibLogger.Debug(this.GetType(), "HPDF_Xref_GetEntryByObjectId"); HPDF_Xref tmpXref = this; while (tmpXref != null) { uint i; if (tmpXref.Entries.Count + tmpXref.StartOffset > objId) { Error = new HPDF_Error("HPDF_Xref_GetEntryByObjectId", HPDF_Error.HPDF_INVALID_OBJ_ID, 0); } if (tmpXref.StartOffset < objId) { for (i = 0; i < tmpXref.Entries.Count; i++) { if (tmpXref.StartOffset + i == objId) { HPDF_Xref_Entry entry = tmpXref.HPDF_Xref_GetEntry((int)i); return(entry); } } } tmpXref = tmpXref.Prev; } return(null); }
public HPDF_Pages HPDF_Catalog_GetRoot() { var pages = HPDF_Dict_GetItem("Pages", HPDF_Obj_Header.HPDF_OCLASS_DICT); if (pages == null || pages.Header.ObjClass != (HPDF_Obj_Header.HPDF_OSUBCLASS_PAGES | HPDF_Obj_Header.HPDF_OCLASS_DICT)) { Error = new HPDF_Error("HPDF_Catalog_GetRoot", HPDF_Error.HPDF_PAGE_CANNOT_GET_ROOT_PAGES, 0); } return(pages as HPDF_Pages); }
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; } }
public HPDF_Dict() { LibLogger.Debug(this.GetType(), "ctor"); Header = new HPDF_Obj_Header { ObjClass = HPDF_Obj_Header.HPDF_OCLASS_DICT }; List = new List <HPDF_DictElement>(); Filter = HPDF_Stream.HPDF_STREAM_FILTER_NONE; Error = new HPDF_Error(); }
public void HPDF_FreeDoc() { LibLogger.Debug(this.GetType(), "HPDF_FreeDoc"); Error = new HPDF_Error(); if (Xref != null) { Xref.HPDF_Xref_Free(); Xref = null; } PdfVersion = (int)HPDF_PdfVer.HPDF_VER_13; }
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; } }
public void HPDF_List_Insert(HPDF_Object target, HPDF_Object item) { int targetIdx = HPDF_List_Find(target); HPDF_Object lastItem = Obj[Obj.Count - 1]; int i; LibLogger.Debug(this.GetType(), " HPDF_List_Insert"); if (targetIdx < 0) { Error = new HPDF_Error("HPDF_List_Insert", HPDF_Error.HPDF_ITEM_NOT_FOUND, 0); } /* move the item of the list to behind one by one. */ for (i = Obj.Count - 2; i >= targetIdx; i--) { Obj[i + 1] = Obj[i]; } Obj[targetIdx] = item; HPDF_List_Add(lastItem); }
public void HPDF_Pages_AddKids(HPDF_Dict kid) { LibLogger.Debug(this.GetType(), "HPDF_Pages_AddKids"); HPDF_Array kids; HPDF_PageAttr pageAttr; if (kid.HPDF_Dict_GetItem("Parent", HPDF_Obj_Header.HPDF_OCLASS_DICT) == null) { Error = new HPDF_Error("HPDF_Pages_AddKids", HPDF_Error.HPDF_PAGE_CANNOT_SET_PARENT, 0); } kid.HPDF_Dict_Add("Parent", this); // C kids = (HPDF_Array )HPDF_Dict_GetItem (parent, "Kids", HPDF_OCLASS_ARRAY); kids = this.HPDF_Dict_GetItem("Kids", HPDF_Obj_Header.HPDF_OCLASS_ARRAY) as HPDF_Array; if (kids == null) { Error = new HPDF_Error("HPDF_Pages_AddKids", HPDF_Error.HPDF_PAGES_MISSING_KIDS_ENTRY, 0); } if (kid.Header.ObjClass == (HPDF_Obj_Header.HPDF_OCLASS_DICT | HPDF_Obj_Header.HPDF_OSUBCLASS_PAGE)) { pageAttr = (HPDF_PageAttr)kid.Attr; pageAttr.parent = this; } if (kid.Header.ObjClass == (HPDF_Obj_Header.HPDF_OCLASS_DICT | HPDF_Obj_Header.HPDF_OSUBCLASS_PAGE)) { // TODO var attr : HPDF_PageAttr = kid.attr ; pageAttr = (HPDF_PageAttr)kid.Attr; } //kids.HPDF_Array_Add(kid); //(kids, kid); }
public virtual double measureTextFn(HPDF_Font font, string text, uint len, double width, double fontSize, double charSpace, double wordSpace, bool wordwrap, C_NumberPointer realWidth) { Error = new HPDF_Error("Function measure text not implemented by HPDF_FontAttr"); return(0); }
public virtual HPDF_TextWidth textWidthFn(HPDF_Font font, string text, uint len) { Error = new HPDF_Error("Function textWidthFn not implemented by HPDF_FontAttr"); return(null); }