*!* Program: PDF Generator library
*!* Author: Dorin Vasilescu
*!* Date:
*!* Copyright: 2007 Dorin Vasilescu
*!* Description: PDF generator library, free libharu API wrapper
*!*
*!* Revision Information:
*!* 2007.05 - first beta release


*if commented, status_Assign will not be included, slightly faster code
*but no access to error messages from API  
#define WITH_STATUS_ASSIGN	1

#include hpdf_consts.h
#include hpdf_types.h

#define FALSE .F.
#define TRUE .T.
#define CR CHR(13)
#define LF CHR(10)
#define chr0	Chr(0)

define class pdfGen as Custom	&& olepublic 

	doc = 0					&& pdf document handle, returned by New()
	name = "_pdf"
	initialized = FALSE
	pdfLibrary = IIF(TYPE("gcAppPath")<>'U',Addbs(Substr(gcAppPath,1,Rat([\],gcAppPath,2)))+[COMUNROA\],[])+"libhpdf.dll"
	status = 0				&&last status 0 = HPDF_OK
	errorMsg = ''			&&error message
	errors = .null.			&&error messages

	*info attributes
	info_author = 'PDF'		&&pdf info
	info_creator = 'VFP9'
	info_producer = 'PDF library'
	info_title = ' '
	info_subject = ' '
	info_keywords = ' '

	*encryption
	owner_passwd = ''
	user_passwd = ''
	encrypt_mode = 'R3'		&& R2 or R3, R3 has 5 to 16 key length
	key_length = 8

	*permissions
	enable_print = TRUE
	enable_copy = TRUE

	**************
	procedure Init
		with this

			.Addproperty('aDeclaredDLLs[1,3]','')
			.errors = NewObject('Collection')
			
			if not this.initialized
				.LoadDLLS()
				.Declare_Dlls()
				.InitializeErrCodes()
				store TRUE to this.initialized
			endif
			.doc = .New()
		endwith
	endproc

	procedure loadDLLS
		local array aTemp[1,3]
		aTemp = ''
		if aDlls(aTemp) > 0
			dimension this.aDeclaredDLLs[Alen(aTemp,1),3]
			Acopy(aTemp,this.aDeclaredDLLs)
		endif
	endproc

	procedure SetPDF
		with this
			.status =  .SetInfoAttr( HPDF_INFO_AUTHOR , .info_author )
			.status = .SetInfoAttr( HPDF_INFO_CREATOR , .info_creator )
			.status = .SetInfoAttr( HPDF_INFO_PRODUCER , .info_producer )
			.status = .SetInfoAttr( HPDF_INFO_TITLE , .info_title )
			.status = .SetInfoAttr( HPDF_INFO_SUBJECT , .info_subject )

			.SetPermission()

			if not Empty(.owner_passwd) or not Empty(.user_passwd)
				.SetPassword( .owner_passwd, .user_passwd )
			endif

		endwith
	endproc

#IFDEF WITH_STATUS_ASSIGN
	***********************
	procedure status_assign
		lparameters nErrorCode
		if m.nErrorCode = this.status 
			return 
		endif 
		this.status =  m.nErrorCode
		if nErrorCode <> 0
			this.errormsg = 'Unknown error.'
			try 
				this.errormsg = this.errors.Item(Transform( m.nErrorCode))
			catch
			endtry 
		endif 
	endproc 
#ENDIF 

	*!*************************************************************************
	*!* main PDF document handling functions
	*!*************************************************************************
	procedure New
		if this.HasDoc()
			this.FreeDoc()
		endif
		*this.SetPDF()
		return HPDF_New(0,0)
	endproc

	procedure Free( )
		this.status = HPDF_Free(this.doc)
		return this.status = HPDF_OK
	endproc

	procedure NewDoc()
		local pdf
		pdf = this.doc
		this.status = HPDF_NewDoc(this.doc)
		return this.status = HPDF_OK
	endproc

	*revoke document but keeps allocated resources (images, encodings, fonts) for reuse
	*
	procedure FreeDoc()
		this.status = HPDF_FreeDoc(this.doc)
		return this.status = HPDF_OK
	endproc

	*revoke document and all allocated resources (images, encodings, fonts)
	*
	procedure FreeDocAll()
		this.status = HPDF_FreeDocAll(this.doc)
		return this.status = HPDF_OK
	endproc

	procedure HasDoc(pdf)
		return not HPDF_HasDoc(pdf) = 0
	endproc

	procedure SaveToStream()
		this.status = HPDF_SaveToStream(this.doc)
		return this.status = HPDF_OK
	endproc

	procedure GetStreamSize()
		return HPDF_GetStreamSize(this.doc )
	endproc

	procedure ReadFromStream
		Parameters buf,size
		return HPDF_ReadFromStream(this.doc, @m.buf, m.size )
	endproc

	procedure ResetStream()
		this.status = HPDF_ResetStream(this.doc)
		return this.status = HPDF_OK
	endproc

	procedure SaveToFile( filename ) as HPDF_Status
		this.status = HPDF_SaveToFile(this.doc,m.filename)
		return this.status 
	endproc

	*returns last error code of pdf object
	procedure GetError()
		return HPDF_GetError(this.doc)
	endproc

	procedure ResetError()
		this.status = HPDF_ResetError(this.doc)
		return this.status = HPDF_OK
	endproc

	procedure GetPageByIndex(index)
		this.status = this.GetError()
		return HPDF_GetPageByIndex(this.doc,m.index)
	endproc

	procedure GetPageLayout()
		return HPDF_GetPageLayout(this.doc)
	endproc

	procedure SetPageLayout(layout)
		this.status = HPDF_SetPageLayout(this.doc, m.layout)
		return this.status = HPDF_OK
	endproc

	procedure GetPageMode()
		return HPDF_GetPageMode(this.doc)
	endproc

	procedure SetPageMode(mode)
		this.status = HPDF_SetPageMode(this.doc,m.mode)
		return this.status = HPDF_OK
	endproc

	procedure GetViewerPreference()
		return HPDF_GetViewerPreference(this.doc)
	endproc

	procedure SetViewerPreference(prefv)
		this.status = HPDF_SetViewerPreference(this.doc,m.prefv)
		return this.status = HPDF_OK
	endproc

	procedure SetOpenAction(open_action)
		this.status = HPDF_SetOpenAction(this.doc,m.open_action)
		return this.status = HPDF_OK
	endproc


	*!*************************************************************************
	*!* PDF document pages handling functions
	*!*************************************************************************

	procedure GetCurrentPage()
		return 	HPDF_GetCurrentPage(this.doc)
	endproc

	procedure AddPage()
		return HPDF_AddPage(this.doc)
	endproc

	procedure InsertPage(page)
		return HPDF_InsertPage(this.doc,page)
	endproc

	procedure Page_SetWidth(page,value)
		this.status = HPDF_Page_SetWidth(m.page,m.value)
		return this.status = HPDF_OK
	endproc

	procedure Page_SetHeight(page,value)
		this.status = HPDF_Page_SetHeight(m.page,m.value)
		return this.status = HPDF_OK
	endproc

	procedure Page_SetHeight(page,value)
		this.status = HPDF_Page_SetHeight(m.page,m.value)
		return this.status = HPDF_OK
	endproc

	procedure Page_SetSize(page,size,direction)
		this.status = HPDF_Page_SetSize(m.page,m.size,m.direction)
		return this.status = HPDF_OK
	endproc

	procedure Page_SetRotate(page,angle)
		this.status = HPDF_Page_SetRotate(m.page,m.angle)
		return this.status = HPDF_OK
	endproc

	procedure Page_GetCurrentPos(page)
		local point as Empty
		local cPoint as String 
		cPoint = Replicate(Chr(0),8)
		point = Newobject('Empty')
		this.status = HPDF_Page_GetCurrentPos2(m.page,@m.cPoint)
		Addproperty(point,'x',Ctobin(Left(cPoint,4),'N'))
		Addproperty(point,'y',Ctobin(Right(cPoint,4),'N'))
		return point
	endproc 

	procedure Page_GetCurrentPos2(page)
		local point as Empty
		local cPoint as String 
		cPoint = Replicate(Chr(0),8)
		point = Newobject('Empty')
		this.status = HPDF_Page_GetCurrentPos2(m.page,@m.cPoint)
		Addproperty(point,'x',Ctobin(Left(m.cPoint,4),'N'))
		Addproperty(point,'y',Ctobin(Right(m.cPoint,4),'N'))
		return point
	endproc 

	procedure Page_GetCurrentTextPos(page)
		local point as Empty
		local cPoint as String 
		cPoint = Replicate(Chr(0),8)
		point = Newobject('Empty')
		this.status = HPDF_Page_GetCurrentTextPos2(m.page, @m.cPoint)
		Addproperty(point,'x',Ctobin(Left(m.cPoint,4),'N'))
		Addproperty(point,'y',Ctobin(Right(m.cPoint,4),'N'))
		return point
	endproc 
	

	*!*************************************************************************
	*!* PDF document font handling functions
	*!*************************************************************************

	procedure GetFont(font_name,encoding_name)
		return HPDF_GetFont(this.doc,m.font_name,m.encoding_name)
	endproc

	procedure LoadType1FontFromFile(afm_file_name, data_file_name)
		return HPDF_LoadType1FontFromFile(this.doc,m.afm_file_name,m.data_file_name)
	endproc

	procedure LoadTTFontFromFile(file_name, embedding)
		return HPDF_LoadTTFontFromFile(this.doc, m.file_name, m.embedding)
	endproc

	procedure LoadTTFontFromFile2(file_name, index, embedding)
		return HPDF_LoadTTFontFromFile2(this.doc, m.file_name, m.index, m.embedding)
	endproc

	procedure AddPageLabel(page_num,style,first_page,prefix)
		return HPDF_AddPageLabel(this.doc,m.page_num,m.style,m.first_page,m.prefix)
	endproc

	*!*************************************************************************
	*!* PDF document outline handling functions
	*!*************************************************************************

	procedure CreateOutline(parent,title,encoder)
		return HPDF_CreateOutline(this.doc,m.parent,m.title,m.encoder)
	endproc

	procedure Outline_SetOpened(outline as HPDF_Outline, opened as HPDF_BOOL) as HPDF_STATUS
		return HPDF_Outline_SetOpened(m.outline,m.opened)
	endproc

	procedure Outline_SetDestination(outline as HPDF_Outline, dst as HPDF_Outline) as HPDF_STATUS
		return HPDF_Outline_SetDestination(m.outline,m.dst)
	endproc

	*!*************************************************************************
	*!* PDF document destinations handling functions
	*!*************************************************************************

	procedure Page_CreateDestination(page as HPDF_Page) as HPDF_Destination
		pagedst = HPDF_Page_CreateDestination(m.page)
		if pagedst = 0
			this.status = this.GetError()
		endif 
		return pagedst
	endproc

	procedure Destination_SetXYZ(dst as HPDF_Destination ;
			,left as HPDF_Destination ;
			,top as HPDF_Destination  ;
			,zoom as HPDF_Destination ) as HPDF_STATUS

		this.status = HPDF_Destination_SetXYZ(m.dst,m.left,m.top,m.zoom)
		return this.status = HPDF_OK
	endproc


	procedure Destination_SetFit(dst as HPDF_Destination) as HPDF_STATUS
		this.status = HPDF_Destination_SetFit(m.dst)
		return this.status = HPDF_OK
	endproc


	procedure Destination_SetFitH(dst as HPDF_Destination ;
			,top as HPDF_Destination) ;
			as HPDF_STATUS
		this.status = HPDF_Destination_SetFitH(m.dst , m.top )
		return this.status = HPDF_OK
	endproc

	procedure Destination_SetFitV( dst as HPDF_Destination ;
			,left as HPDF_REAL ) as HPDF_STATUS
		this.status = HPDF_Destination_SetFitV(m.dst,m.left)
		return this.status = HPDF_OK
	endproc

	procedure Destination_SetFitR(dst as HPDF_Destination ;
			,left as HPDF_REAL 			;
			,bottom as HPDF_REAL        ;
			,right as HPDF_REAL         ;
			,top as HPDF_REAL ) as HPDF_STATUS
			
		this.status = HPDF_Destination_SetFitR(m.dst,m.left,m.bottom,m.right)
		return this.status = HPDF_OK
	endproc

	procedure Destination_SetFitB(dst as HPDF_Destination) as HPDF_STATUS
		this.status = HPDF_Destination_SetFitB(m.dst)
		return this.status = HPDF_OK
	endproc

	procedure Destination_SetFitBH(dst as HPDF_Destination  ;
			,top as HPDF_REAL) as HPDF_STATUS
		this.status = HPDF_Destination_SetFitBH(m.dst,m.top)
		return this.status = HPDF_OK
	endproc

	procedure Destination_SetFitBV(dst as HPDF_Destination  ;
			,left as HPDF_REAL ) as HPDF_STATUS
		this.status = HPDF_Destination_SetFitBV(m.dst,m.left)
		return this.status = HPDF_OK
	endproc

	*!*************************************************************************
	*!* PDF document encoder functions
	*!*************************************************************************

	procedure GetEncoder(encoding_name as String) as HPDF_Encoder
		return HPDF_GetEncoder(this.doc,m.encoding_name)
	endproc

	procedure GetCurrentEncoder() as HPDF_Encoder
		return HPDF_GetCurrentEncoder  (this.doc)
	endproc

	procedure SetCurrentEncoder(encoding_name) as HPDF_STATUS
		this.status = HPDF_SetCurrentEncoder(this.doc,m.encoding_name)
		return this.status = HPDF_OK
	endproc

	procedure Encoder_GetType(encoder as HPDF_Encoder) as HPDF_EncoderType
		return HPDF_Encoder_GetType(m.encoder)
	endproc

	procedure Encoder_GetByteType(encoder as HPDF_Encoder ;
			,text as String ;
			,index as HPDF_UINT ) as HPDF_ByteType
		return HPDF_Encoder_GetByteType  (m.encoder,m.text,m.index)
	endproc

	procedure Encoder_GetUnicode(encoder as HPDF_Encoder   ;
			,code as HPDF_UINT16) as HPDF_UNICODE
		return HPDF_Encoder_GetUnicode(m.encoder,m.code)
	endproc

	procedure Encoder_GetWritingMode (encoder as HPDF_Encoder) as HPDF_WritingMode
		return HPDF_Encoder_GetWritingMode(m.encoder)
	endproc

	procedure UseJPEncodings() as HPDF_STATUS
		this.status = HPDF_UseJPEncodings(this.doc)
		return this.status = HPDF_OK
	endproc

	procedure UseKREncodings() as HPDF_STATUS
		this.status = HPDF_UseKREncodings(this.doc)
		return this.status = HPDF_OK
	endproc

	procedure UseCNSEncodings() as HPDF_STATUS
		this.status = HPDF_UseCNSEncodings(this.doc)
		return this.status = HPDF_OK
	endproc

	procedure UseCNTEncodings() as HPDF_STATUS
		this.status = HPDF_UseCNTEncodings(this.doc)
		return this.status = HPDF_OK
	endproc

	*!*************************************************************************
	*!* PDF document annotations functions
	*!*************************************************************************

	procedure Page_CreateTextAnnot( page as HPDF_Page ;
			,rect as HPDF_Rect ;
			,text as String ;
			,encoder as HPDF_Encoder ) as HPDF_Annotation
		retval = HPDF_Page_CreateTextAnnot(m.page,m.rect,m.text,m.encoder)
		if m.retval = 0
			this.status = this.GetError()
		endif 
		return m.retval
	endproc

	procedure Page_CreateLinkAnnot(page as HPDF_Page ;
			,rect as HPDF_Rect ;
			,dst as HPDF_Destination ) as  HPDF_Annotation
		m.retval = HPDF_Page_CreateLinkAnnot  (m.page,m.rect,m.dst)
		if m.retval = 0
			this.status = this.GetError()
		endif 
		return retval
	endproc

	procedure Page_CreateURILinkAnnot(page as HPDF_Page	;
			,rect as HPDF_Rect	;
			,url as String) as HPDF_Annotation
		retval = HPDF_Page_CreateURILinkAnnot(m.page,m.rect,m.url)
		if m.retval = 0
			this.status = this.GetError()
		endif 
		return retval
	endproc

	procedure LinkAnnot_SetHighlightMode(annot as HPDF_Annotation ;
			,mode as HPDF_AnnotHighlightMode) as HPDF_STATUS
		this.status = HPDF_LinkAnnot_SetHighlightMode(m.annot,m.mode)
		return this.status = HPDF_OK
	endproc

	procedure LinkAnnot_SetBorderStyle(annot as HPDF_Annotation	;
			,width as HPDF_REAL ;
			,dash_on as HPDF_UINT16 ;
			,dash_off as HPDF_UINT16) as HPDF_STATUS
		this.status = HPDF_LinkAnnot_SetBorderStyle(m.annot,m.width,m.dash_on,m.dash_off)
		return this.status = HPDF_OK
	endproc

	procedure TextAnnot_SetIcon( annot as HPDF_Annotation ;
			,icon as HPDF_Annotation) as HPDF_STATUS
		this.status = HPDF_TextAnnot_SetIcon(m.annot,m.icon)
		return this.status = HPDF_OK
	endproc

	procedure extAnnot_SetOpened(annot as HPDF_Annotation ;
			,opened as HPDF_BOOL ) as HPDF_STATUS
		this.status = HPDF_TextAnnot_SetOpened(m.annot,m.opened)
		return this.status = HPDF_OK
	endproc

	*!*************************************************************************
	*!* PDF document image handling functions
	*!*************************************************************************
	procedure LoadPngImageFromFile(filename as string) as HPDF_Image
		retval = HPDF_LoadPngImageFromFile(this.doc,m.filename)
		if m.retval = 0
			this.status = this.GetError()
		endif 
		return m.retval	
	endproc

	procedure LoadPngImageFromFile2(filename as string) as HPDF_Image
		m.retval = HPDF_LoadPngImageFromFile2(this.doc, m.filename)
		if m.retval = 0
			this.status = this.GetError()
		endif 
		return m.retval	
	endproc

	procedure LoadJpegImageFromFile(filename AS String ) as HPDF_Image
		retval = HPDF_LoadJpegImageFromFile(this.doc, m.filename)
		if m.retval = 0
			this.status = this.GetError()
		endif 
		return m.retval	
	endproc

	procedure LoadRawImageFromFile(filename as String ;
			,width as HPDF_UINT ;
			,height as HPDF_UINT ;
			,color_space as HPDF_ColorSpace)  as HPDF_Image
		retval = HPDF_LoadRawImageFromFile(this.doc,m.filename,m.width,m.height,m.color_space)
		if m.retval = 0
			this.status = this.GetError()
		endif 
		return m.retval	
	endproc

	procedure LoadRawImageFromMem(buf as HPDF_BYTE ;
			,width as HPDF_UINT ;
			,height as HPDF_UINT ;
			,color_space as HPDF_ColorSpace ;
			,bits_per_component as HPDF_UINT) as HPDF_Image
		retval = HPDF_LoadRawImageFromMem(this.doc,m.buf,m.width,m.height,m.color_space,m.bits_per_component)
		if m.retval = 0
			this.status = this.GetError()
		endif 
		return m.retval	
	endproc

	procedure Image_GetWidth(image as HPDF_Image) as HPDF_UINT
		return HPDF_Image_GetWidth(m.image)
	endproc

	procedure Image_GetHeight(image as HPDF_Image) as HPDF_UINT
		return HPDF_Image_GetHeight(m.image)
	endproc

	procedure Image_GetBitsPerComponent(image as HPDF_Image  )	as HPDF_UINT
		return HPDF_Image_GetBitsPerComponent(m.image)
	endproc

	procedure Image_GetColorSpace(image as HPDF_Image) as string
		return HPDF_Image_GetColorSpace (m.image)
	endproc

	procedure Image_SetColorMask(image as HPDF_Image ;
			,rmin as HPDF_UINT ;
			,rmax as HPDF_UINT ;
			,gmin as HPDF_UINT ;
			,gmax as HPDF_UINT ;
			,bmin as HPDF_UINT ;
			,bmax as HPDF_UINT	) as HPDF_STATUS
		this.status = HPDF_Image_SetColorMask(m.image,m.rmin,m.rmax,m.gmin,m.gmax,m.bmin,m.bmax)
		return this.status
	endproc

	procedure Image_SetMaskImage(image as HPDF_Image ;
			,mask_image as HPDF_Image) as HPDF_STATUS
		this.status = HPDF_Image_SetMaskImage(m.image, m.mask_image)
		return this.status
	endproc

	*!*************************************************************************
	*!* PDF document info attributes handling functions
	*!*************************************************************************

	procedure SetInfoAttr(type as HPDF_InfoType ;
			,value as String) as HPDF_STATUS
		this.status = HPDF_SetInfoAttr(this.doc,m.type,m.value)
		return this.status
	endproc

	procedure info_author_assign(cValue)
		if Vartype(cValue) = 'C'
			this.status = this.SetInfoAttr(HPDF_INFO_AUTHOR , m.cValue)
			this.info_author = m.cValue
		endif
	endproc

	procedure info_creator_assign(cValue)
		if Vartype(cValue) = 'C'
			this.status = this.SetInfoAttr(HPDF_INFO_CREATOR , m.cValue)
			this.info_creator = m.cValue
		endif
	endproc

	procedure info_producer_assign(cValue)
		if Vartype(cValue) = 'C'
			this.status = this.SetInfoAttr( HPDF_INFO_PRODUCER , m.cValue)
			this.info_producer = m.cValue
		endif
	endproc

	procedure info_title_assign(cValue)
		if Vartype(cValue) = 'C'
			this.status = this.SetInfoAttr( HPDF_INFO_TITLE, m.cValue)
			this.info_title = m.cValue
		endif
	endproc

	procedure info_subject_assign(cValue)
		if Vartype(cValue) = 'C'
			this.status = this.SetInfoAttr( HPDF_INFO_SUBJECT, m.cValue)
			this.info_title = m.cValue
		endif
	endproc

	*doesn't work :(
	*procedure info_keywords_assign(cValue)
	*	if Vartype(cValue) = 'C'
	*		this.status = this.SetInfoAttr( HPDF_INFO_KEYWORDS, m.cValue )
	*		this.info_keywords = m.cValue
	*	endif
	*endproc

	procedure GetInfoAttr(type as HPDF_InfoType ) as String
		return HPDF_GetInfoAttr(this.doc,type)
	endproc

	procedure SetInfoDateAttr(type as HPDF_InfoTypeas ;
			,value as Datetime) as HPDF_STATUS
		local year, month, day, hour, minutes, seconds, cStruct
		year = Year(m.value)
		month = Month(m.value)
		day = Day(m.value)
		hour = Hour(m.value)
		minutes = Minute(m.value)
		seconds = Sec(m.value)

		cStruct = BinToC(m.year,'4rs') ;
			+ BinToC(m.month ,'4rs') ;
			+ BinToC(m.day ,'4rs') ;
			+ BinToC(m.hour ,'4rs') ;
			+ BinToC(m.minutes ,'4rs') ;
			+ BinToC(m.seconds ,'4rs') + ' ' + Replicate(Chr(0),8)

		this.status = HPDF_SetInfoDateAttr(this.doc,m.type,m.cStruct)
		return this.status
	endproc

	*!*************************************************************************
	*!* PDF document encryption/permission handling functions
	*!*************************************************************************
	procedure SetPassword(owner_passwd as String ;
			,user_passwd as String ) as HPDF_STATUS
		this.status = HPDF_SetPassword(this.doc,m.owner_passwd,m.user_passwd)
		return this.status
	endproc

	procedure owner_passwd_assign(cPassword)
		if Vartype(cPassword) = 'C'
			this.status = this.SetPassword(this.doc,m.cPassword,this.user_passwd)
			this.owner_passwd = m.cValue
		endif
	endproc
	procedure user_passwd_assign(cPassword)
		if Vartype(cPassword) = 'C'
			this.status = this.SetPassword(this.doc,this.owner_passwd, m.cPassword)
			this.user_passwd = m.cValue
		endif
	endproc

	procedure SetPermission() as HPDF_STATUS
		local permission
		permission = Iif(this.enable_print,4,0) + Iif(this.enable_copy,16,0)
		this.status = HPDF_SetPermission(this.doc,m.permission)
		return this.status
	endproc

	procedure enable_print_assign(lValue)
		if Vartype(lValue) = 'L'
			this.enable_print = m.lValue
			this.SetPermission()
		endif
	endproc

	procedure enable_copy_assign(lValue)
		if Vartype(lValue) = 'L'
			this.enable_copy = m.lValue
			this.SetPermission()
		endif
	endproc

	procedure SetEncryptionMode() as HPDF_STATUS
		local mode,key_len
		mode = this.encrypt_mode
		key_len = this.key_length

		if this.encrypt_mode = 'R2'
			mode = HPDF_ENCRYPT_R2
			key_len = 5
		endif
		if this.encrypt_mode = 'R3'
			mode = HPDF_ENCRYPT_R3
			key_len = Max(this.key_length,16)
		endif
		this.status = HPDF_SetEncryptionMode(this.doc,m.mode,m.key_len)
		return this.status
	endproc

	*!*************************************************************************
	*!* PDF document compression setting function
	*!*************************************************************************
	procedure SetCompressionMode(mode as HPDF_UINT) as HPDF_STATUS
		this.status = HPDF_SetCompressionMode(this.doc, m.mode)
		return this.status
	endproc

	*!*************************************************************************
	*!* PDF document fonts / text functions
	*!*************************************************************************
	*
	*real_width must be passed by ref if needed
	procedure Font_MeasureText(font as HPDF_Font;
			,text as String ;
			,len as HPDF_UINT ;
			,width as HPDF_REAL;
			,font_size as HPDF_REAL;
			,char_space as HPDF_REAL ;
			,word_space as HPDF_REAL ;
			,wordwrap as HPDF_BOOL ;
			,real_width as HPDF_REAL ) as HPDF_UINT
		HPDF_Font_MeasureText(m.font,m.text,m.len,m.width,m.font_size,m.char_space,m.word_space,m.wordwrap,@m.real_width)
		return m.real_width
	endproc

	procedure Page_TextWidth(page as HPDF_Page,text as String) as HPDF_REAL
		return HPDF_Page_TextWidth(m.page,m.text)
	endproc

	procedure Page_GetHeight(page as HPDF_Page) as HPDF_REAL
		return HPDF_Page_GetHeight(m.page)
	endproc
	procedure Page_GetWidth(page as HPDF_Page) as HPDF_REAL
		return HPDF_Page_GetWidth(m.page)
	endproc

	*
	*real_width must be passed by ref if needed
	procedure Page_MeasureText(page as HPDF_Page ;
			,text as String ;
			,width as HPDF_REAL ;
			,wordwrap as HPDF_BOOL ;
			,real_width as HPDF_REAL ) as HPDF_UINT
		HPDF_Page_MeasureText(m.page,m.text,m.width,m.wordwrap,@m.real_width)
		return m.real_width
	endproc

	procedure Page_GetCurrentFont( page as HPDF_Page ) as HPDF_Font
		return HPDF_Page_GetCurrentFont(m.page)
	endproc 
	  
	procedure Page_GetCurrentFontSize(page as HPDF_Page) as HPDF_REAL
		return HPDF_Page_GetCurrentFontSize(m.page)
	endproc 
	
	
	*!*************************************************************************
	*!* PDF document graphics functions
	*!*************************************************************************
	procedure Page_SetLineWidth(page as HPDF_Page ;
			,line_width as HPDF_REAL  ) as HPDF_STATUS
		this.status = HPDF_Page_SetLineWidth(m.page,m.line_width)
		return this.status
	endproc
	
	procedure Page_GetLineWidth(page as HPDF_Page)
		return HPDF_Page_GetLineWidth(m.page)
	endproc 
		
	procedure Page_SetLineCap(page as HPDF_Page ;
			,line_cap as HPDF_LineCap) as HPDF_STATUS
		this.status =	HPDF_Page_SetLineCap(m.page,m.line_cap)
		return this.status
	endproc

	procedure Page_SetLineJoin(page as HPDF_Page ;
			,line_join as HPDF_LineJoin) as HPDF_STATUS
		this.status = HPDF_Page_SetLineJoin(m.page,m.line_join)
		return this.status
	endproc

	procedure Page_SetMiterLimit(page as HPDF_Page ;
			,miter_limit as HPDF_REAL) as HPDF_STATUS
		this.status =	HPDF_Page_SetMiterLimit(m.page,m.miter_limit)
		return this.status
	endproc

	procedure Page_SetDash(	page as HPDF_Page ;
			,dash_ptn as string ;				&&string of UINT16 points
			,num_param as HPDF_UINT ;
			,phase as HPDF_UINT) as HPDF_STATUS
		this.status = HPDF_Page_SetDash(m.page,m.dash_ptn,m.num_param,m.phase)
		return this.status
	endproc

	procedure Page_SetFlat(page as HPDF_Page ;
			,flatness as HPDF_REAL) as HPDF_STATUS
		this.status =	HPDF_Page_SetFlat(m.page,m.flatness)
		return this.status
	endproc

	procedure Page_MoveTo(page as HPDF_Page ;
			,x as HPDF_REAL ;
			,y as HPDF_REAL) as HPDF_STATUS
		this.status =	HPDF_Page_MoveTo(m.page,m.x,m.y)
		return this.status
	endproc


	procedure Page_LineTo(page as HPDF_Page ;
			,x as HPDF_REAL ;
			,y as HPDF_REAL ) as HPDF_STATUS
		this.status = HPDF_Page_LineTo(m.page,m.x,m.y)
		return this.status
	endproc


	procedure Page_CurveTo(  page as HPDF_Page ;
			,x1 as HPDF_REAL ;
			,y1 as HPDF_REAL ;
			,x2 as HPDF_REAL ;
			,y2 as HPDF_REAL ;
			,x3 as HPDF_REAL ;
			,y3 as HPDF_REAL ) as HPDF_STATUS
		this.status = HPDF_Page_CurveTo(m.page,m.x1,m.y1,m.x2,m.y2,m.x3,m.y3)
		return this.status
	endproc

	procedure Page_CurveTo2(page as HPDF_Page ;
			,x2 as HPDF_REAL	;
			,y2 as HPDF_REAL	;
			,x3 as HPDF_REAL	;
			,y3 as HPDF_REAL	) as HPDF_STATUS
		this.status = HPDF_Page_CurveTo2(m.page,m.x2,m.y2,m.x3,m.y3)
		return this.status
	endproc

	procedure Page_CurveTo3(page as HPDF_Page ;
			,x1 as HPDF_REAL  ;
			,y1 as HPDF_REAL  ;
			,x3 as HPDF_REAL  ;
			,y3 as HPDF_REAL  ) as HPDF_STATUS
		this.status =	HPDF_Page_CurveTo3(m.page,m.x1,m.y1,m.x3,m.y3)
		return this.status
	endproc

	procedure Page_ClosePath(page as HPDF_Page)as HPDF_STATUS
		this.status =	HPDF_Page_ClosePath(m.page)
		return this.status
	endproc

	procedure Page_Rectangle(page as HPDF_Page ;
			,x as HPDF_REAL ;
			,y as HPDF_REAL  ;
			,width as HPDF_REAL ;
			,height as HPDF_REAL ) 	as HPDF_STATUS
		this.status =	HPDF_Page_Rectangle(m.page,m.x,m.y,m.width,m.height)
		return this.status
	endproc

	*/*--- Special graphic state operator --------------------------------------*/
	procedure Page_GSave(page as HPDF_Page) as HPDF_STATUS
		this.status = HPDF_Page_GSave(m.page)
		return this.status
	endproc

	procedure Page_GRestore(page as HPDF_Page) as HPDF_STATUS
		this.status = HPDF_Page_GRestore(m.page)
		return this.status
	endproc

	procedure Page_Concat(page as HPDF_Page ;
			,a as HPDF_REAL ;
			,b as HPDF_REAL ;
			,c as HPDF_REAL	;
			,d as HPDF_REAL	;
			,x as HPDF_REAL	;
			,y as HPDF_REAL	) as HPDF_STATUS
		this.status = HPDF_Page_Concat(m.page,m.a,m.b,m.c,m.d,m.x,m.y)
		return this.status
	endproc

	procedure Page_SetCharSpace(page as HPDF_Page, value as HPDF_REAL ) as HPDF_STATUS
		this.status =	HPDF_Page_SetCharSpace(m.page,m.value)
		return this.status
	endproc

	procedure Page_SetWordSpace(page as HPDF_Page, value as HPDF_REAL ) as HPDF_STATUS
		this.status =	HPDF_Page_SetWordSpace(m.page,m.value)
		return this.status
	endproc

	procedure Page_SetHorizontalScalling(page as HPDF_Page, value as HPDF_REAL ) as HPDF_STATUS
		this.status =	HPDF_Page_SetHorizontalScalling(m.page,m.value)
		return this.status
	endproc
	procedure Page_SetTextLeading(page as HPDF_Page, value as HPDF_REAL ) as HPDF_STATUS
		this.status =	HPDF_Page_SetTextLeading(m.page,m.value)
		return this.status
	endproc
	procedure Page_SetTextRise(page as HPDF_Page, value as HPDF_REAL ) as HPDF_STATUS
		this.status =	HPDF_Page_SetTextRise(m.page,m.value)
		return this.status
	endproc

	*/*--- Path painting operator ---------------------------------------------*/
	procedure Page_Stroke(page as HPDF_Page)
		this.status =  HPDF_Page_Stroke(m.page)
		return this.status
	endproc

	procedure Page_ClosePathStroke(page as HPDF_Page)
		this.status =  HPDF_Page_ClosePathStroke(m.page)
		return this.status
	endproc

	procedure Page_Fill(page as HPDF_Page)
		this.status =  HPDF_Page_Fill(m.page)
		return this.status
	endproc

	procedure Page_Eofill(page as HPDF_Page)
		this.status =  HPDF_Page_Eofill(m.page)
		return this.status
	endproc

	procedure Page_FillStroke(page as HPDF_Page)
		this.status =  HPDF_Page_FillStroke (m.page)
		return this.status
	endproc

	procedure Page_EofillStroke(page as HPDF_Page)
		this.status =  HPDF_Page_EofillStroke(m.page)
		return this.status
	endproc

	procedure Page_ClosePathFillStroke(page as HPDF_Page)
		this.status =  HPDF_Page_ClosePathFillStroke(m.page)
		return this.status
	endproc

	procedure Page_ClosePathEofillStroke(page as HPDF_Page)
		this.status =  HPDF_Page_ClosePathEofillStroke(m.page)
		return this.status
	endproc

	procedure Page_EndPath(page as HPDF_Page)
		this.status =  HPDF_Page_EndPath(m.page)
		return this.status
	endproc

	procedure Page_BeginText(page as HPDF_Page  ) as HPDF_STATUS
		this.status = HPDF_Page_BeginText(m.page)
		return this.status
	endproc


	procedure Page_EndText(page as HPDF_Page) as HPDF_STATUS
		this.status =	HPDF_Page_EndText(m.page)
		return this.status
	endproc

	procedure Page_Clip(page as HPDF_Page) as HPDF_STATUS  
		this.status = HPDF_Page_Clip(m.page)
		return this.status 
	endproc

	procedure Page_Eoclip(page as HPDF_Page) as HPDF_STATUS  
		this.status = HPDF_Page_Eoclip(m.page)
		return this.status 
	endproc
	
	procedure Page_SetFontAndSize(page as HPDF_Page, font as HPDF_Font,size as HPDF_REAL ) as HPDF_STATUS
		this.status =	HPDF_Page_SetFontAndSize(m.page,m.font,m.size)
		return this.status
	endproc

	procedure Page_SetTextRenderingMode(page as HPDF_Page,mode as HPDF_TextRenderingMode) as HPDF_STATUS
		this.status =	HPDF_Page_SetTextRenderingMode(m.page,m.mode)
		return this.status
	endproc

	procedure Page_MoveTextPos(page as HPDF_Page,x as HPDF_REAL,y as HPDF_REAL) as HPDF_STATUS
		this.status =	HPDF_Page_MoveTextPos(m.page,m.x,m.y)
		return this.status
	endproc

	procedure Page_MoveTextPos2(page as HPDF_Page,x as HPDF_REAL,y as HPDF_REAL) as HPDF_STATUS
		this.status =	HPDF_Page_MoveTextPos2(m.page,m.x,m.y)
		return this.status
	endproc

	procedure Page_SetTextMatrix( page as HPDF_Page ;
								,a as HPDF_REAL ;
								,b as HPDF_REAL ;
								,c as HPDF_REAL ;
								,d as HPDF_REAL ;
								,x as HPDF_REAL ;
								,y as HPDF_REAL ) as HPDF_STATUS
		this.status = HPDF_Page_SetTextMatrix(m.page,m.a,m.b,m.c,m.d,m.x,m.y)
	endproc 

	procedure Page_MoveToNextLine(page as HPDF_Page) as HPDF_STATUS
		this.status =	HPDF_Page_MoveToNextLine(m.page)
		return this.status
	endproc

	procedure Page_ShowText(page as HPDF_Page, text as String ) as HPDF_STATUS
		this.status = HPDF_Page_ShowText(m.page,m.text)
		return this.status
	endproc

	procedure Page_ShowTextNextLine(page as HPDF_Page, text as String ) as HPDF_STATUS
		this.status = HPDF_Page_ShowTextNextLine(m.page,m.text)
		return this.status
	endproc

	procedure Page_SetGrayFill(page as HPDF_Page, gray as HPDF_REAL) as HPDF_STATUS
		this.status =	HPDF_Page_SetGrayFill(m.page,m.gray)
		return this.status
	endproc

	procedure Page_SetGrayStroke(page as HPDF_Page, gray as HPDF_REAL) as HPDF_STATUS
		this.status =	HPDF_Page_SetGrayStroke(m.page,m.gray)
		return this.status
	endproc

	procedure Page_SetRGBFill(page as HPDF_Page,r as HPDF_REAL,g as HPDF_REAL,b as HPDF_REAL) as HPDF_STATUS
		this.status =	HPDF_Page_SetRGBFill(m.page,m.r,m.g,m.b)
		return this.status
	endproc

	procedure Page_SetRGBStroke(page as HPDF_Page,r as HPDF_REAL,g as HPDF_REAL,b as HPDF_REAL) as HPDF_STATUS
		this.status =	HPDF_Page_SetRGBStroke(m.page,m.r,m.g,m.b)
		return this.status
	endproc

	procedure Page_SetCMYKFill(page as HPDF_Page ;
			,c as HPDF_REAL  ;
			,m as HPDF_REAL  ;
			,y as HPDF_REAL  ;
			,k as HPDF_REAL ) as HPDF_STATUS
		this.status =	HPDF_Page_SetCMYKFill(m.page,m.c,m.m,m.y,m.k)
		return this.status
	endproc

	procedure Page_SetCMYKStroke(page as HPDF_Page ;
			,c as HPDF_REAL  ;
			,m as HPDF_REAL  ;
			,y as HPDF_REAL  ;
			,k as HPDF_REAL ) as HPDF_STATUS
		this.status =	HPDF_Page_SetCMYKStroke(m.page,m.c,m.m,m.y,m.k)
		return this.status
	endproc

	procedure Page_DrawImage(page as HPDF_Page ;
			,image as HPDF_Image ;
			,x as HPDF_REAL ;
			,y as HPDF_REAL ;
			,width as HPDF_REAL	;
			,height as HPDF_REAL ) as HPDF_STATUS
		this.status =	HPDF_Page_DrawImage(m.page,m.image,m.x,m.y,m.width,m.height)
		return this.status
	endproc

	procedure Page_Circle(page as HPDF_Page ;
			,x as HPDF_REAL ;
			,y as HPDF_REAL	;
			,ray as HPDF_REAL ) as HPDF_STATUS
		this.status =	HPDF_Page_Circle(m.page,m.x,m.y,m.ray)
		return this.status
	endproc

	procedure Page_Ellipse( page as HPDF_Page ;
			,x as HPDF_REAL ;
			,y as HPDF_REAL ;
			,xray as HPDF_REAL ;
			,yray as HPDF_REAL ) as HPDF_STATUS
		this.status = HPDF_Page_Ellipse ( m.page, m.x, m.y, m.xray, m.yray )
		return this.status
	endproc  

	procedure Page_Arc(page as HPDF_Page ;
			,x as HPDF_REAL ;
			,y as HPDF_REAL	;
			,ray as HPDF_REAL ;
			,ang1 as HPDF_REAL ;
			,ang2 as HPDF_REAL ) as HPDF_STATUS
		this.status =	HPDF_Page_Arc( m.page, m.x, m.y, m.ray, m.ang1, m.ang2)
		return this.status
	endproc

	procedure Page_TextOut(page as HPDF_Page ;
			,xpos as HPDF_REAL ;
			,ypos as HPDF_REAL ;
			,text as String ) as HPDF_STATUS
		this.status =	HPDF_Page_TextOut( m.page, m.xpos, m.ypos, m.text)
		return this.status
	endproc

	procedure Page_TextRect(page as HPDF_Page ;
							,left as HPDF_REAL ;
							,top as HPDF_REAL ;
							,right as HPDF_REAL ;
							,bottom as HPDF_REAL ;
							,text as string ;
							,align as HPDF_TextAlignment ;
							,len as integer, style as string  ) as HPDF_STATUS
		this.status = HPDF_Page_TextRect( m.page, m.left, m.top, m.right, m.bottom, m.text, m.align, m.len )
		return this.status
	endproc

	procedure Page_ExecuteXObject(page as HPDF_Page, obj as HPDF_XObject) as HPDF_STATUS  
		this.status = HPDF_Page_ExecuteXObject( m.page, m.obj)
		return this.status
	endproc

	*this doesn't work, return page handle as integer and empty string 
	*
	*procedure Page_GetRGBFill(page as HPDF_Page) as HPDF_RGBColor 
	*	colorDWAddress = HPDF_Page_GetRGBFill(page)
	*	colorStruct = Sys(2600, colorDWAddress , 12)
	*	color = NewObject('Empty')
	*	AddProperty(color,'r',CToBin(Left(colorStruct ,4),'N'))
	*	AddProperty(color,'g',CToBin(Substr(colorStruct ,5,4),'N'))
	*	AddProperty(color,'b',CToBin(Substr(colorStruct ,9,4),'N'))
	*	return color 		

	procedure Declare_dlls
		*/*---------------------------------------------------------------------------*/
		*/*----- document handling ---------------------------------------------------*/

		declare HPDF_Doc HPDF_New in ((this.pdfLibrary)) integer, integer
		declare integer HPDF_Free in ((this.pdfLibrary)) HPDF_Doc pdf
		declare HPDF_STATUS HPDF_NewDoc in ((this.pdfLibrary)) HPDF_Doc pdf
		declare integer HPDF_FreeDoc in ((this.pdfLibrary)) HPDF_Doc pdf
		declare integer HPDF_FreeDocAll in (this.pdfLibrary) HPDF_Doc pdf
		declare HPDF_BOOL HPDF_HasDoc  in (this.pdfLibrary) HPDF_Doc pdf
		declare HPDF_STATUS HPDF_SaveToStream  in (this.pdfLibrary) HPDF_Doc pdf
		declare integer HPDF_GetStreamSize  in (this.pdfLibrary) HPDF_Doc pdf
		declare HPDF_STATUS HPDF_ReadFromStream  in (this.pdfLibrary) HPDF_Doc pdf, @ string buf , integer size
		declare HPDF_STATUS HPDF_ResetStream  in (this.pdfLibrary) HPDF_Doc pdf
		declare HPDF_STATUS HPDF_SaveToFile  in (this.pdfLibrary) HPDF_Doc pdf, string filename
		declare HPDF_STATUS HPDF_GetError  in (this.pdfLibrary) HPDF_Doc pdf
		declare integer HPDF_ResetError  in (this.pdfLibrary) HPDF_Doc pdf
		declare HPDF_Page HPDF_GetPageByIndex  in (this.pdfLibrary) HPDF_Doc pdf, integer index
		declare HPDF_PageLayout HPDF_GetPageLayout in (this.pdfLibrary) HPDF_Doc pdf
		declare HPDF_STATUS HPDF_SetPageLayout in (this.pdfLibrary) HPDF_Doc pdf ,integer layout
		declare HPDF_PageMode HPDF_GetPageMode in (this.pdfLibrary) HPDF_Doc pdf
		declare HPDF_STATUS HPDF_SetPageMode in (this.pdfLibrary) HPDF_Doc pdf, integer mode
		declare integer HPDF_GetViewerPreference in (this.pdfLibrary) HPDF_Doc pdf
		declare HPDF_STATUS HPDF_SetViewerPreference in (this.pdfLibrary) HPDF_Doc pdf, integer prefv
		declare HPDF_STATUS HPDF_SetOpenAction in (this.pdfLibrary) HPDF_Doc pdf, integer open_action

		*/*---------------------------------------------------------------------------*/
		*/*----- page handling -------------------------------------------------------*/

		declare HPDF_Page HPDF_GetCurrentPage in (this.pdfLibrary) HPDF_Doc  pdf
		declare HPDF_Page HPDF_AddPage in (this.pdfLibrary) HPDF_Doc  pdf
		declare HPDF_Page HPDF_InsertPage in (this.pdfLibrary) HPDF_Doc pdf, HPDF_Page pageBefore
		declare HPDF_STATUS HPDF_Page_SetWidth in (this.pdfLibrary) HPDF_Page   page,	HPDF_REAL   value
		declare HPDF_STATUS HPDF_Page_SetHeight in (this.pdfLibrary) HPDF_Page   page,	HPDF_REAL   value
		declare HPDF_STATUS HPDF_Page_SetHeight in (this.pdfLibrary) HPDF_Page   page,	HPDF_REAL   value
		declare HPDF_STATUS HPDF_Page_SetSize in (this.pdfLibrary) HPDF_Page  page,	HPDF_PageSizes  size ;
			,HPDF_PageDirection direction
		declare HPDF_STATUS HPDF_Page_SetRotate in (this.pdfLibrary) HPDF_Page	page,	HPDF_UINT16   angle
		
		*declare HPDF_Point HPDF_Page_GetCurrentPos in (this.pdfLibrary) HPDF_Page page &&doesn't work
		declare HPDF_STATUS HPDF_Page_GetCurrentPos2 in (this.pdfLibrary) HPDF_Page page, HPDF_Point  @ pos 
		declare HPDF_STATUS HPDF_Page_GetCurrentTextPos2 in (this.pdfLibrary) HPDF_Page page, HPDF_Point  @ pos 

		*/*---------------------------------------------------------------------------*/
		*/*----- font handling -------------------------------------------------------*/

		declare HPDF_Font HPDF_GetFont in (this.pdfLibrary) HPDF_Doc  pdf, string font_name, string  encoding_name
		declare string HPDF_LoadType1FontFromFile in (this.pdfLibrary) HPDF_Doc	pdf, string   afm_file_name ;
			,string	data_file_name
		declare string HPDF_LoadTTFontFromFile in (this.pdfLibrary) HPDF_Doc	pdf, string  file_name ;
			,HPDF_BOOL    embedding
		declare string HPDF_LoadTTFontFromFile2 in (this.pdfLibrary) HPDF_Doc pdf, string file_name ;
			,HPDF_UINT    index, HPDF_BOOL    embedding
		declare integer HPDF_AddPageLabel in (this.pdfLibrary) HPDF_Doc pdf,HPDF_UINT page_num,HPDF_PageNumStyle style ;
			,HPDF_UINT first_page, string prefix

		*/*--------------------------------------------------------------------------*/
		*/*----- outline ------------------------------------------------------------*/

		declare HPDF_STATUS HPDF_CreateOutline in (this.pdfLibrary) HPDF_Doc pdf,HPDF_Outline   parent ;
			,string title,	HPDF_Encoder encoder
		declare HPDF_STATUS HPDF_Outline_SetOpened in (this.pdfLibrary) HPDF_Outline outline,HPDF_BOOL opened
		declare HPDF_STATUS HPDF_Outline_SetDestination in (this.pdfLibrary) HPDF_Outline outline,HPDF_Destination  dst

		*/*--------------------------------------------------------------------------*/
		*/*----- destination --------------------------------------------------------*/

		declare HPDF_Destination HPDF_Page_CreateDestination in (this.pdfLibrary) HPDF_Page page
		declare HPDF_STATUS HPDF_Destination_SetXYZ in (this.pdfLibrary) HPDF_Destination  dst,HPDF_REAL left,HPDF_REAL top ;
			,HPDF_REAL zoom
		declare HPDF_STATUS HPDF_Destination_SetFit in (this.pdfLibrary) HPDF_Destination dst
		declare HPDF_STATUS HPDF_Destination_SetFitH in (this.pdfLibrary) HPDF_Destination  dst,HPDF_REAL top
		declare HPDF_STATUS HPDF_Destination_SetFitV in (this.pdfLibrary) HPDF_Destination  dst,HPDF_REAL left
		declare HPDF_STATUS HPDF_Destination_SetFitR in (this.pdfLibrary) HPDF_Destination  dst,HPDF_REAL left ;
			,HPDF_REAL bottom, HPDF_REAL right,HPDF_REAL top
		declare HPDF_STATUS HPDF_Destination_SetFitB in (this.pdfLibrary) HPDF_Destination  dst
		declare HPDF_STATUS HPDF_Destination_SetFitBH in (this.pdfLibrary) HPDF_Destination  dst ;
			,HPDF_REAL top
		declare HPDF_STATUS HPDF_Destination_SetFitBV in (this.pdfLibrary) HPDF_Destination  dst ;
			,HPDF_REAL left

		*/*--------------------------------------------------------------------------*/
		*/*----- encoder ------------------------------------------------------------*/

		declare HPDF_Encoder HPDF_GetEncoder in (this.pdfLibrary) HPDF_Doc pdf, string encoding_name
		declare HPDF_Encoder HPDF_GetCurrentEncoder in (this.pdfLibrary) HPDF_Doc   pdf
		declare HPDF_STATUS HPDF_SetCurrentEncoder in (this.pdfLibrary) HPDF_Doc pdf, string encoding_name
		declare HPDF_EncoderType HPDF_Encoder_GetType in (this.pdfLibrary) HPDF_Encoder   encoder

		declare HPDF_ByteType HPDF_Encoder_GetByteType in (this.pdfLibrary) HPDF_Encoder encoder ;
			,string text,HPDF_UINT index
		declare string HPDF_Encoder_GetUnicode in (this.pdfLibrary) HPDF_Encoder   encoder ;
			,string code
		declare HPDF_WritingMode HPDF_Encoder_GetWritingMode in (this.pdfLibrary) HPDF_Encoder   encoder
		declare HPDF_STATUS HPDF_UseJPEncodings in (this.pdfLibrary) HPDF_Doc   pdf
		declare HPDF_STATUS HPDF_UseKREncodings in (this.pdfLibrary) HPDF_Doc pdf
		declare HPDF_STATUS HPDF_UseCNSEncodings in (this.pdfLibrary) HPDF_Doc   pdf
		declare HPDF_STATUS HPDF_UseCNTEncodings  in (this.pdfLibrary) HPDF_Doc   pdf

		*/*--------------------------------------------------------------------------*/
		*/*----- annotation ---------------------------------------------------------*/
		declare HPDF_Annotation HPDF_Page_CreateTextAnnot in (this.pdfLibrary) HPDF_Page page ;
			,HPDF_Rect  rect, string text, HPDF_Encoder encoder
		declare HPDF_Annotation HPDF_Page_CreateLinkAnnot in (this.pdfLibrary) HPDF_Page page ;
			,HPDF_Rect          rect ;
			,HPDF_Destination   dst
		declare HPDF_Annotation HPDF_Page_CreateURILinkAnnot in (this.pdfLibrary) HPDF_Page     page ;
			,HPDF_Rect  rect ;
			,string 	url
		declare HPDF_STATUS HPDF_LinkAnnot_SetHighlightMode in (this.pdfLibrary) ;
			HPDF_Annotation  annot, HPDF_AnnotHighlightMode   mode
		declare HPDF_STATUS HPDF_LinkAnnot_SetBorderStyle in (this.pdfLibrary) HPDF_Annotation  annot ;
			,HPDF_REAL        width ;
			,HPDF_UINT16      dash_on ;
			,HPDF_UINT16      dash_off
		declare HPDF_STATUS HPDF_TextAnnot_SetIcon in (this.pdfLibrary) HPDF_Annotation   annot ;
			, HPDF_AnnotIcon    icon
		declare HPDF_STATUS HPDF_TextAnnot_SetOpened in (this.pdfLibrary) HPDF_Annotation   annot ;
			,HPDF_BOOL   opened

		*/*--------------------------------------------------------------------------*/
		*/*----- image data ---------------------------------------------------------*/

		declare HPDF_Image HPDF_LoadPngImageFromFile in (this.pdfLibrary) HPDF_Doc pdf, string filename
		declare HPDF_Image HPDF_LoadPngImageFromFile2 in (this.pdfLibrary) HPDF_Doc pdf, string filename
		declare HPDF_Image HPDF_LoadJpegImageFromFile in (this.pdfLibrary) HPDF_Doc pdf, string filename
		declare HPDF_Image HPDF_LoadRawImageFromFile in (this.pdfLibrary) HPDF_Doc pdf ;
			,string 			filename ;
			,HPDF_UINT          width ;
			,HPDF_UINT          height;
			,HPDF_ColorSpace    color_space
		declare HPDF_Image HPDF_LoadRawImageFromMem in (this.pdfLibrary) HPDF_Doc pdf ;
			,HPDF_BYTE buf ,HPDF_UINT width, HPDF_UINT height,HPDF_ColorSpace	color_space ;
			,HPDF_UINT	bits_per_component
		declare integer HPDF_Image_GetWidth in (this.pdfLibrary) HPDF_Image image
		declare integer HPDF_Image_GetHeight  in (this.pdfLibrary) HPDF_Image image
		declare integer HPDF_Image_GetBitsPerComponent in (this.pdfLibrary) HPDF_Image  image
		declare string HPDF_Image_GetColorSpace in (this.pdfLibrary) HPDF_Image  image
		declare HPDF_STATUS HPDF_Image_SetColorMask in (this.pdfLibrary) HPDF_Image image,HPDF_UINT	rmin ;
			,HPDF_UINT	rmax,HPDF_UINT	gmin,HPDF_UINT	gmax,HPDF_UINT	bmin,HPDF_UINT	bmax
		declare HPDF_STATUS HPDF_Image_SetMaskImage in (this.pdfLibrary) HPDF_Image image,HPDF_Image mask_image

		*/*--------------------------------------------------------------------------*/
		*/*----- info dictionary ----------------------------------------------------*/

		declare HPDF_STATUS HPDF_SetInfoAttr in (this.pdfLibrary) HPDF_Doc pdf,HPDF_InfoType type,string value
		declare string HPDF_GetInfoAttr in (this.pdfLibrary) HPDF_Doc pdf,HPDF_InfoType   type
		declare HPDF_STATUS HPDF_SetInfoDateAttr in (this.pdfLibrary) HPDF_Doc pdf ;
			,HPDF_InfoType type,HPDF_Date value

		*/*--------------------------------------------------------------------------*/
		*/*----- encryption ---------------------------------------------------------*/
		declare HPDF_STATUS HPDF_SetPassword in (this.pdfLibrary) HPDF_Doc pdf ;
			,string owner_passwd, string user_passwd
		declare HPDF_STATUS HPDF_SetPermission in (this.pdfLibrary) HPDF_Doc pdf, integer permission
		declare HPDF_STATUS HPDF_SetEncryptionMode in (this.pdfLibrary) HPDF_Doc pdf ;
			,HPDF_EncryptMode   mode,HPDF_UINT key_len

		*/*--------------------------------------------------------------------------*/
		*/*----- compression --------------------------------------------------------*/
		declare HPDF_STATUS HPDF_SetCompressionMode in (this.pdfLibrary) HPDF_Doc pdf, HPDF_UINT mode

		*/*--------------------------------------------------------------------------*/
		*/*----- fonts / text -------------------------------------------------------*/
		declare HPDF_UINT HPDF_Font_MeasureText in (this.pdfLibrary) HPDF_Font font ;
			,string text ;
			,HPDF_UINT len ;
			,HPDF_REAL width ;
			,HPDF_REAL font_size ;
			,HPDF_REAL char_space ;
			,HPDF_REAL word_space ;
			,HPDF_BOOL wordwrap ;
			,HPDF_REAL @ real_width 
			
		declare HPDF_REAL HPDF_Page_GetWidth in (this.pdfLibrary) HPDF_Page page
		declare HPDF_REAL HPDF_Page_GetHeight in (this.pdfLibrary) HPDF_Page page
		declare HPDF_REAL HPDF_Page_TextWidth in (this.pdfLibrary) HPDF_Page page, string text
		declare HPDF_Font HPDF_Page_GetCurrentFont in (this.pdfLibrary)	HPDF_Page page
		declare HPDF_UINT HPDF_Page_MeasureText in (this.pdfLibrary) HPDF_Page page ;
				,string text ;
				,HPDF_REAL width ;
				,HPDF_BOOL wordwrap ;
				,HPDF_REAL @ real_width
				
		declare HPDF_RGBColor HPDF_Page_GetRGBFill in (this.pdfLibrary) HPDF_Page page
		declare HPDF_Font HPDF_Page_GetCurrentFont in (this.pdfLibrary) HPDF_Page page
		declare HPDF_REAL HPDF_Page_GetCurrentFontSize  in (this.pdfLibrary) HPDF_Page page

		*/*----- GRAPHICS OPERATORS -------------------------------------------------*/

		*/*--- General graphics state ---------------------------------------------*/
		*/* w */
		declare HPDF_STATUS HPDF_Page_SetLineWidth in (this.pdfLibrary) HPDF_Page  page,HPDF_REAL  line_width
		declare HPDF_REAL HPDF_Page_GetLineWidth in (this.pdfLibrary) HPDF_Page   page
		*/* J */
		declare HPDF_STATUS HPDF_Page_SetLineCap in (this.pdfLibrary) HPDF_Page	 page,HPDF_LineCap  line_cap
		*/* j */
		declare HPDF_STATUS HPDF_Page_SetLineJoin in (this.pdfLibrary) HPDF_Page	  page,HPDF_LineJoin  line_join
		*/* M */
		declare HPDF_STATUS HPDF_Page_SetMiterLimit in (this.pdfLibrary) HPDF_Page  page,HPDF_REAL  miter_limit

		*/* d */
		declare HPDF_STATUS HPDF_Page_SetDash in (this.pdfLibrary) HPDF_Page  page, string  dash_ptn ;
			,HPDF_UINT	num_param, HPDF_UINT phase
		*/* ri --not implemented yet */
		*/* i */
		declare HPDF_STATUS HPDF_Page_SetFlat in (this.pdfLibrary) HPDF_Page page,HPDF_REAL	flatness
		*/*--- Path construction operator ------------------------------------------*/
		*/* m */
		declare HPDF_STATUS HPDF_Page_MoveTo in (this.pdfLibrary) HPDF_Page	page,HPDF_REAL	x,HPDF_REAL	y
		*/* l */
		declare HPDF_STATUS HPDF_Page_LineTo in (this.pdfLibrary) HPDF_Page	page ,HPDF_REAL x ;
			,HPDF_REAL y
		*/* c */
		declare HPDF_STATUS HPDF_Page_CurveTo in (this.pdfLibrary) HPDF_Page page,HPDF_REAL	x1 ;
			,HPDF_REAL	y1,	HPDF_REAL	x2 ,HPDF_REAL	y2, HPDF_REAL	x3 ,HPDF_REAL	y3
		*/* v */
		declare HPDF_STATUS HPDF_Page_CurveTo2 in (this.pdfLibrary) HPDF_Page page ;
			,HPDF_REAL	x2 ;
			,HPDF_REAL	y2 ;
			,HPDF_REAL	x3 ;
			,HPDF_REAL	y3
		*/* y */
		declare HPDF_STATUS HPDF_Page_CurveTo3 in (this.pdfLibrary) HPDF_Page  page ;
			,HPDF_REAL  x1 ;
			,HPDF_REAL  y1 ;
			,HPDF_REAL  x3 ;
			,HPDF_REAL  y3
		*/* h */
		declare HPDF_STATUS HPDF_Page_ClosePath in (this.pdfLibrary) HPDF_Page  page
		*/* re */
		declare HPDF_STATUS HPDF_Page_Rectangle in (this.pdfLibrary) HPDF_Page  page ;
			,HPDF_REAL  x;
			,HPDF_REAL  y;
			,HPDF_REAL  width;
			,HPDF_REAL  height

		*/*--- Special graphic state operator --------------------------------------*/
		*/* q */
		declare HPDF_STATUS HPDF_Page_GSave in (this.pdfLibrary) HPDF_Page	page
		*/* Q */
		declare HPDF_STATUS HPDF_Page_GRestore  in (this.pdfLibrary) HPDF_Page	page
		*/* cm */
		declare HPDF_STATUS HPDF_Page_Concat in (this.pdfLibrary) HPDF_Page	page ;
			,HPDF_REAL	a;
			,HPDF_REAL	b;
			,HPDF_REAL	c;
			,HPDF_REAL	d;
			,HPDF_REAL	x;
			,HPDF_REAL	y

		*/* Tc */
		declare HPDF_STATUS HPDF_Page_SetCharSpace  in (this.pdfLibrary) HPDF_Page  page, HPDF_REAL  value

		*/* Tw */
		declare HPDF_STATUS HPDF_Page_SetWordSpace in (this.pdfLibrary) HPDF_Page  page, HPDF_REAL  value
		*/* Tz */
		declare HPDF_STATUS HPDF_Page_SetHorizontalScalling  in (this.pdfLibrary) HPDF_Page  page, HPDF_REAL  value
		*/* TL */
		declare HPDF_STATUS HPDF_Page_SetTextLeading  in (this.pdfLibrary) HPDF_Page  page, HPDF_REAL  value
		*/* Ts */
		declare HPDF_STATUS HPDF_Page_SetTextRise in (this.pdfLibrary) HPDF_Page  page, HPDF_REAL  value
		*/*--- Path painting operator ---------------------------------------------*/
		*/* S */
		declare HPDF_STATUS HPDF_Page_Stroke in (this.pdfLibrary) HPDF_Page  page
		*/* s */
		declare HPDF_STATUS HPDF_Page_ClosePathStroke in (this.pdfLibrary) HPDF_Page  page
		*/* f */
		declare HPDF_STATUS HPDF_Page_Fill in (this.pdfLibrary) HPDF_Page  page
		*/* f* */
		declare HPDF_STATUS HPDF_Page_Eofill in (this.pdfLibrary) HPDF_Page  page
		*/* B */
		declare HPDF_STATUS HPDF_Page_FillStroke in (this.pdfLibrary) HPDF_Page  page
		*/* B* */
		declare HPDF_STATUS HPDF_Page_EofillStroke  in (this.pdfLibrary) HPDF_Page  page
		*/* b */
		declare HPDF_STATUS HPDF_Page_ClosePathFillStroke  in (this.pdfLibrary) HPDF_Page  page
		*/* b* */
		declare HPDF_STATUS HPDF_Page_ClosePathEofillStroke in (this.pdfLibrary) HPDF_Page  page
		*/* n */
		declare HPDF_STATUS HPDF_Page_EndPath in (this.pdfLibrary) HPDF_Page  page
		*/*--- Text object operator -----------------------------------------------*/
		*/* BT */
		declare HPDF_STATUS HPDF_Page_BeginText in (this.pdfLibrary) HPDF_Page  page
		*/* ET */
		declare HPDF_STATUS HPDF_Page_EndText in (this.pdfLibrary) HPDF_Page  page
		*/* W */
		declare HPDF_STATUS HPDF_Page_Clip in (this.pdfLibrary) HPDF_Page  page
		*/* W* */
		declare HPDF_STATUS HPDF_Page_Eoclip in (this.pdfLibrary) HPDF_Page  page

		*/*--- Text state ---------------------------------------------------------*/
		*/* Tf */
		declare HPDF_STATUS HPDF_Page_SetFontAndSize in (this.pdfLibrary) HPDF_Page  page;
			,HPDF_Font  font;
			,HPDF_REAL  size
		*/* Tr */
		declare HPDF_STATUS HPDF_Page_SetTextRenderingMode in (this.pdfLibrary) HPDF_Page page ;
			,HPDF_TextRenderingMode  mode
		*/*--- Text positioning ---------------------------------------------------*/
		*/* Td */
		declare HPDF_STATUS HPDF_Page_MoveTextPos in (this.pdfLibrary) HPDF_Page page ;
			,HPDF_REAL   x ;
			,HPDF_REAL   y
		*/* TD */
		declare HPDF_STATUS HPDF_Page_MoveTextPos2 in (this.pdfLibrary) HPDF_Page page ;
			,HPDF_REAL   x ;
			,HPDF_REAL   y

		*/* TM */
		declare HPDF_STATUS HPDF_Page_SetTextMatrix in (this.pdfLibrary) HPDF_Page page ;
			,HPDF_REAL a,HPDF_REAL    b,HPDF_REAL    c,HPDF_REAL    d,HPDF_REAL    x,HPDF_REAL    y

		*/* T* */
		declare HPDF_STATUS HPDF_Page_MoveToNextLine in (this.pdfLibrary) HPDF_Page  page
		*/*--- Text showing -------------------------------------------------------*/
		*/* Tj */
		declare HPDF_STATUS HPDF_Page_ShowText in (this.pdfLibrary) HPDF_Page page,string text
		*/* ' */
		declare HPDF_STATUS HPDF_Page_ShowTextNextLine in (this.pdfLibrary) HPDF_Page page,string text
		*/* g */
		declare HPDF_STATUS HPDF_Page_SetGrayFill in (this.pdfLibrary) HPDF_Page page,HPDF_REAL gray
		*/* G */
		declare HPDF_STATUS HPDF_Page_SetGrayStroke in (this.pdfLibrary) HPDF_Page page,HPDF_REAL gray
		*/* rg */
		declare HPDF_STATUS HPDF_Page_SetRGBFill in (this.pdfLibrary) HPDF_Page  page ;
			,HPDF_REAL  r ;
			,HPDF_REAL  g ;
			,HPDF_REAL  b
		*/* RG */
		declare HPDF_STATUS HPDF_Page_SetRGBStroke in (this.pdfLibrary) HPDF_Page  page ;
			,HPDF_REAL  r ;
			,HPDF_REAL  g ;
			,HPDF_REAL  b
		*/* k */
		declare HPDF_STATUS HPDF_Page_SetCMYKFill in (this.pdfLibrary) HPDF_Page page ;
			,HPDF_REAL  c ;
			,HPDF_REAL  m ;
			,HPDF_REAL  y ;
			,HPDF_REAL  k
		*/* K */
		declare HPDF_STATUS HPDF_Page_SetCMYKStroke  in (this.pdfLibrary) HPDF_Page page ;
			,HPDF_REAL  c ;
			,HPDF_REAL  m ;
			,HPDF_REAL  y ;
			,HPDF_REAL  k
		declare HPDF_STATUS HPDF_Page_Circle in (this.pdfLibrary) HPDF_Page	page ;
			,HPDF_REAL	 x ;
			,HPDF_REAL	 y ;
			,HPDF_REAL	 ray
	
		declare HPDF_STATUS HPDF_Page_Ellipse in (this.pdfLibrary) HPDF_Page page ;
			,HPDF_REAL   x ;
			,HPDF_REAL   y ;
			,HPDF_REAL  xray ;
			,HPDF_REAL  yray 
	
		declare HPDF_STATUS HPDF_Page_Arc in (this.pdfLibrary) HPDF_Page page ;
			,HPDF_REAL	x ;
			,HPDF_REAL	y ;
			,HPDF_REAL	ray ;
			,HPDF_REAL	ang1 ;
			,HPDF_REAL	ang2
		declare HPDF_STATUS HPDF_Page_DrawImage in (this.pdfLibrary) HPDF_Page	page ;
			,HPDF_Image image;
			,HPDF_REAL	x;
			,HPDF_REAL	y;
			,HPDF_REAL	width;
			,HPDF_REAL	height
			
		declare HPDF_STATUS HPDF_Page_TextRect in (this.pdfLibrary) HPDF_Page page ;
			,HPDF_REAL				left ;
			,HPDF_REAL				top ;
			,HPDF_REAL				right ;
			,HPDF_REAL				bottom ;
			,string					text ;
			,HPDF_TextAlignment   	align ;
			,integer len

		declare HPDF_STATUS HPDF_Page_TextOut in (this.pdfLibrary) HPDF_Page	page ;
			,HPDF_REAL	xpos ;
			,HPDF_REAL	ypos ;
			,string  text

		*/*--- XObjects -----------------------------------------------------------*//* 
		declare HPDF_STATUS HPDF_Page_ExecuteXObject in (this.pdfLibrary) HPDF_Page page ;
			,HPDF_XObject  obj 

	endproc

	procedure InitializeErrCodes

		with this.errors
			.Add([Internal error. The consistency of the data was lost.], "4097")
			.Add([Internal error. The consistency of the data was lost.], "4098")
			.Add([Internal error. The consistency of the data was lost.], "4099")
			.Add([The length of the data exceeds HPDF_LIMIT_MAX_STRING_LEN.], "4100")
			.Add([Cannot get a pallet data from PNG image.], "4101")
			.Add([], "4102")
			.Add([The count of elements of a dictionary exceeds HPDF_LIMIT_MAX_DICT_ELEMENT], "4103")
			.Add([Internal error. The consistency of the data was lost.], "4104")
			.Add([Internal error. The consistency of the data was lost.], "4105")
			.Add([Internal error. The consistency of the data was lost.], "4106")
			.Add([HPDF_SetPermission() OR HPDF_SetEncryptMode() was called before a password is set.], "4107")
			.Add([Internal error. The consistency of the data was lost.], "4108")
			.Add([], "4109")
			.Add([Tried to register a font that has been registered.], "4110")
			.Add([Cannot register a character to the japanese word wrap characters list.], "4111")
			.Add([], "4112")
			.Add([Tried to set the owner password to NULL.The owner password and user password is the same.], "4113")
			.Add([Internal error. The consistency of the data was lost.], "4115")
			.Add([The depth of the stack exceeded HPDF_LIMIT_MAX_GSTATE.], "4116")
			.Add([Memory allocation failed.], "4117")
			.Add([File processing failed. (A detailed code is set.)], "4118")
			.Add([Cannot open a file. (A detailed code is set.)], "4119")
			.Add([], "4120")
			.Add([Tried to load a font that has been registered.], "4121")
			.Add([The format of a font-file is invalid .Internal error. The consistency of the data was lost.], "4122")
			.Add([Cannot recognize a header of an afm file.], "4123")
			.Add([The specified annotation handle is invalid.], "4124")
			.Add([], "4125")
			.Add([Bit-per-component of a image which was set as mask-image is invalid.], "4126")
			.Add([Cannot recognize char-matrics-data  of an afm file.], "4127")
			.Add([1. The color_space parameter of HPDF_LoadRawImage is invalid.] + CR + [2. Color-space of a image which was set as mask-image is invalid.] + CR + [3. The function which is invalid in the present  ], "4128")
			.Add([Invalid value was set when invoking HPDF_SetCommpressionMode().], "4129")
			.Add([An invalid date-time value was set.], "4130")
			.Add([An invalid destination handle was set.], "4131")
			.Add([], "4132")
			.Add([An invalid document handle is set.], "4133")
			.Add([The function which is invalid in the present state was invoked.], "4134")
			.Add([An invalid encoder handle is set.], "4135")
			.Add([A combination between font and encoder is wrong.], "4136")
			.Add([], "4137")
			.Add([], "4138")
			.Add([An Invalid encoding name is specified.], "4139")
			.Add([The lengh of the key of encryption is invalid.], "4140")
			.Add([1. An invalid font handle was set.] + CR + [2. Unsupported font format. ], "4141")
			.Add([Internal error. The consistency of the data was lost.], "4142")
			.Add([A font which has the specified name is not found.], "4143")
			.Add([Unsupported image format.], "4144")
			.Add([Unsupported image format.], "4145")
			.Add([Cannot read a postscript-name from an afm file.], "4146")
			.Add([1. An invalid object is set.] + CR + [2. Internal error. The consistency of the data was lost. ], "4147")
			.Add([Internal error. The consistency of the data was lost.], "4148")
			.Add([1. Invoked HPDF_Image_SetColorMask() against the image-object which was set a mask-image.], "4149")
			.Add([An invalid outline-handle was specified.], "4150")
			.Add([An invalid page-handle was specified.], "4151")
			.Add([An invalid pages-handle was specified. (internel error)], "4152")
			.Add([An invalid value is set.], "4153")
			.Add([], "4154")
			.Add([Invalid PNG image format.], "4155")
			.Add([Internal error. The consistency of the data was lost.], "4156")
			.Add([Internal error. The "_FILE_NAME" entry for delayed loading is missing.], "4157")
			.Add([], "4158")
			.Add([Invalid .TTC file format.], "4159")
			.Add([The index parameter was exceed the number of included fonts], "4160")
			.Add([Cannot read a width-data from an afm file.], "4161")
			.Add([Internal error. The consistency of the data was lost.], "4162")
			.Add([An error has returned from PNGLIB while loading an image.], "4163")
			.Add([Internal error. The consistency of the data was lost.], "4164")
			.Add([Internal error. The consistency of the data was lost.], "4165")
			.Add([], "4166")
			.Add([], "4167")
			.Add([], "4168")
			.Add([Internal error. The consistency of the data was lost.], "4169")
			.Add([Internal error. The consistency of the data was lost.], "4170")
			.Add([Internal error. The consistency of the data was lost.], "4171")
			.Add([There are no graphics-states to be restored.], "4172")
			.Add([Internal error. The consistency of the data was lost.], "4173")
			.Add([The current font is not set.], "4174")
			.Add([An invalid font-handle was spacified.], "4175")
			.Add([An invalid font-size was set.], "4176")
			.Add([Invalid graphic mode.], "4177")
			.Add([Internal error. The consistency of the data was lost.], "4178")
			.Add([The specified value is not a multiple of 90.], "4179")
			.Add([An invalid page-size was set.], "4180")
			.Add([An invalid image-handle was set.], "4181")
			.Add([The specified value is out of range.], "4182")
			.Add([The specified value is out of range.], "4183")
			.Add([Unexpected EOF marker was detected.], "4184")
			.Add([Internal error. The consistency of the data was lost.], "4185")
			.Add([], "4186")
			.Add([The length of the specified text is too long.], "4187")
			.Add([The execution of a function was skipped because of other errors.], "4188")
			.Add([This font cannot be embedded. (restricted by license)], "4189")
			.Add([Unsupported ttf format. (cannot find unicode cmap.)], "4190")
			.Add([Unsupported ttf format.], "4191")
			.Add([Unsupported ttf format. (cannot find a necessary table)], "4192")
			.Add([Internal error. The consistency of the data was lost.], "4193")
			.Add([1. The library is not configured to use PNGLIB. 2. Internal error. The consistency of the data was lost.], "4194")
			.Add([Unsupported Jpeg format.], "4195")
			.Add([Failed to parse .PFB file.], "4196")
			.Add([Internal error. The consistency of the data was lost.], "4197")
			.Add([An error has occurred while executing a function of Zlib.], "4198")
			.Add([An error returned from Zlib.], "4199")
			.Add([An invalid URI was set.], "4200")
			.Add([An invalid page-layout was set.], "4201")
			.Add([An invalid page-mode was set.], "4208")
			.Add([An invalid page-num-style was set.], "4209")
			.Add([An invalid icon was set.], "4210")
			.Add([An invalid border-style was set.], "4211")
			.Add([An invalid page-direction was set.], "4212")
			.Add([An invalid font-handle was specified.], "4213")
		endwith	
	endproc 

enddefine


