将pdf文档转换为高质量的html文档

源代码在线查看: object.cc

软件大小: 488 K
上传用户: yangjiuhe
关键词: html 文档 转换
下载地址: 免注册下载 普通下载 VIP

相关代码

				//========================================================================				//				// Object.cc				//				// Copyright 1996-2003 Glyph & Cog, LLC				//				//========================================================================								#include 								#ifdef USE_GCC_PRAGMAS				#pragma implementation				#endif								#include 				#include "Object.h"				#include "Array.h"				#include "Dict.h"				#include "Error.h"				#include "Stream.h"				#include "XRef.h"								//------------------------------------------------------------------------				// Object				//------------------------------------------------------------------------								char *objTypeNames[numObjTypes] = {				  "boolean",				  "integer",				  "real",				  "string",				  "name",				  "null",				  "array",				  "dictionary",				  "stream",				  "ref",				  "cmd",				  "error",				  "eof",				  "none"				};								#ifdef DEBUG_MEM				int Object::numAlloc[numObjTypes] =				  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};				#endif								Object *Object::initArray(XRef *xref) {				  initObj(objArray);				  array = new Array(xref);				  return this;				}								Object *Object::initDict(XRef *xref) {				  initObj(objDict);				  dict = new Dict(xref);				  return this;				}								Object *Object::initDict(Dict *dictA) {				  initObj(objDict);				  dict = dictA;				  dict->incRef();				  return this;				}								Object *Object::initStream(Stream *streamA) {				  initObj(objStream);				  stream = streamA;				  return this;				}								Object *Object::copy(Object *obj) {				  *obj = *this;				  switch (type) {				  case objString:				    obj->string = string->copy();				    break;				  case objName:				    obj->name = copyString(name);				    break;				  case objArray:				    array->incRef();				    break;				  case objDict:				    dict->incRef();				    break;				  case objStream:				    stream->incRef();				    break;				  case objCmd:				    obj->cmd = copyString(cmd);				    break;				  default:				    break;				  }				#ifdef DEBUG_MEM				  ++numAlloc[type];				#endif				  return obj;				}								Object *Object::fetch(XRef *xref, Object *obj) {				  return (type == objRef && xref) ?				         xref->fetch(ref.num, ref.gen, obj) : copy(obj);				}								void Object::free() {				  switch (type) {				  case objString:				    delete string;				    break;				  case objName:				    gfree(name);				    break;				  case objArray:				    if (!array->decRef()) {				      delete array;				    }				    break;				  case objDict:				    if (!dict->decRef()) {				      delete dict;				    }				    break;				  case objStream:				    if (!stream->decRef()) {				      delete stream;				    }				    break;				  case objCmd:				    gfree(cmd);				    break;				  default:				    break;				  }				#ifdef DEBUG_MEM				  --numAlloc[type];				#endif				  type = objNone;				}								char *Object::getTypeName() {				  return objTypeNames[type];				}								void Object::print(FILE *f) {				  Object obj;				  int i;								  switch (type) {				  case objBool:				    fprintf(f, "%s", booln ? "true" : "false");				    break;				  case objInt:				    fprintf(f, "%d", intg);				    break;				  case objReal:				    fprintf(f, "%g", real);				    break;				  case objString:				    fprintf(f, "(");				    fwrite(string->getCString(), 1, string->getLength(), f);				    fprintf(f, ")");				    break;				  case objName:				    fprintf(f, "/%s", name);				    break;				  case objNull:				    fprintf(f, "null");				    break;				  case objArray:				    fprintf(f, "[");				    for (i = 0; i < arrayGetLength(); ++i) {				      if (i > 0)					fprintf(f, " ");				      arrayGetNF(i, &obj);				      obj.print(f);				      obj.free();				    }				    fprintf(f, "]");				    break;				  case objDict:				    fprintf(f, "				    for (i = 0; i < dictGetLength(); ++i) {				      fprintf(f, " /%s ", dictGetKey(i));				      dictGetValNF(i, &obj);				      obj.print(f);				      obj.free();				    }				    fprintf(f, " >>");				    break;				  case objStream:				    fprintf(f, "");				    break;				  case objRef:				    fprintf(f, "%d %d R", ref.num, ref.gen);				    break;				  case objCmd:				    fprintf(f, "%s", cmd);				    break;				  case objError:				    fprintf(f, "");				    break;				  case objEOF:				    fprintf(f, "");				    break;				  case objNone:				    fprintf(f, "");				    break;				  }				}								void Object::memCheck(FILE *f) {				#ifdef DEBUG_MEM				  int i;				  int t;								  t = 0;				  for (i = 0; i < numObjTypes; ++i)				    t += numAlloc[i];				  if (t > 0) {				    fprintf(f, "Allocated objects:\n");				    for (i = 0; i < numObjTypes; ++i) {				      if (numAlloc[i] > 0)					fprintf(f, "  %-20s: %6d\n", objTypeNames[i], numAlloc[i]);				    }				  }				#endif				}							

相关资源