Сообщение Daemony » 2010-03-29 18:07:53
В продолжении
этого топика...
Сравнив два файла
hosts/billing/comp/www/InvoiceDownload.comp и
hosts/billing/comp/www/ContractDownload.comp, пришел к выводу, что вставка печати и подписи Исполнителя в копию договора, которую пользователь может загрузить в формате PDF, не предусмотрена изначально.
Поправьте меня, если я не прав. Познания в php у меня слабые. Но если в InvoiceDownload.comp присутствует:
Код: Выделить всё
#-----------------------------------------------------------------------
$Document = $Invoice['Document'];
#-----------------------------------------------------------------------
$DOM = new DOM($Document);
#-----------------------------------------------------------------------
$DOM->AddChild('Logo',new Tag('IMG',Array('src'=>'SRC:{Images/Logo.bmp}')));
#-----------------------------------------------------------------------
if($IsStamp){
#---------------------------------------------------------------------
$DOM->AddChild('dSign',new Tag('IMG',Array('src'=>'SRC:{Images/dSign.bmp}')));
$DOM->AddChild('aSign',new Tag('IMG',Array('src'=>'SRC:{Images/aSign.bmp}')));
$DOM->AddChild('Stamp',new Tag('IMG',Array('src'=>'SRC:{Images/Stamp.bmp}')));
}
то в ContractDownload.comp упоминаний о вставке .bmp файлов нет.
Я попробовал преобразовать ContractDownload.comp так, чтобы в PDF вставлять Stamp.bmp и dSign.bmp, но у меня ничего не вышло. Ниже приведу пример файла hosts/billing.myserver.com/comp/www/ContractDownload.comp, которым я попытался переопределить hosts/billing/comp/www/ContractDownload.comp
Код: Выделить всё
<?php
#-------------------------------------------------------------------------------
/** @author Бреславский А.В. (Joonte Ltd.) */
/******************************************************************************/
/******************************************************************************/
Eval(COMP_INIT);
/******************************************************************************/
/******************************************************************************/
$Args = Args();
#-------------------------------------------------------------------------------
$IsStamp = (boolean) @$Args['IsStamp'];
$ContractID = (integer) @$Args['ContractID'];
#-------------------------------------------------------------------------------
if(Is_Error(System_Load('modules/Authorisation.mod','classes/DOM.class','libs/HTMLDoc.lib')))
return ERROR | @Trigger_Error(500);
#-------------------------------------------------------------------------------
$Contract = DB_Select('Contracts',Array('ID','UserID','Document'),Array('UNIQ','ID'=>$ContractID));
#-------------------------------------------------------------------------------
switch(ValueOf($Contract)){
case 'error':
return ERROR | @Trigger_Error(500);
case 'exception':
return new gException('CONTRACT_NOT_FOUND','Договор не найден');
case 'array':
#---------------------------------------------------------------------------
$Document = $Contract['Document'];
#---------------------------------------------------------------------------
if(!$Document)
return new gException('DOCUMENT_NOT_BUILDED','Документ не сформирован');
#---------------------------------------------------------------------------
$Permission = Permission_Check('ContractRead',(integer)$GLOBALS['__USER']['ID'],(integer)$Contract['UserID']);
#---------------------------------------------------------------------------
switch(ValueOf($Permission)){
case 'error':
return ERROR | @Trigger_Error(500);
case 'exception':
return ERROR | @Trigger_Error(400);
case 'false':
return ERROR | @Trigger_Error(700);
case 'true':
$DOM = new DOM($Document);
if($IsStamp){
#---------------------------------------------------------------------
$DOM->AddChild('Sign',new Tag('IMG',Array('src'=>'SRC:{Images/dSign.bmp}')));
$DOM->AddChild('Stamp',new Tag('IMG',Array('src'=>'SRC:{Images/Stamp.bmp}')));
}
#-----------------------------------------------------------------------
$Out = $DOM->Build();
if(Is_Error($Out))
return ERROR | @Trigger_Error(500);
#-----------------------------------------------------------------------
$PDF = HTMLDoc_CreatePDF('Contract',$Out);
#-----------------------------------------------------------------------
switch(ValueOf($PDF)){
case 'error':
return ERROR | @Trigger_Error(500);
case 'exception':
return ERROR | @Trigger_Error(400);
case 'string':
#-------------------------------------------------------------------
$Comp = Comp_Load('Formats/Contract/Number',$Contract['ID']);
if(Is_Error($Comp))
return ERROR | @Trigger_Error(500);
#-------------------------------------------------------------------
$Tmp = System_Element('tmp');
if(Is_Error($Tmp))
return ERROR | @Trigger_Error(500);
#-------------------------------------------------------------------
$File = SPrintF('Contract%s.pdf',Md5($_SERVER['REMOTE_ADDR']));
#-------------------------------------------------------------------
$IsWrite = IO_Write(SPrintF('%s/files/%s',$Tmp,$File),$PDF,TRUE);
if(Is_Error($IsWrite))
return ERROR | @Trigger_Error(500);
#-------------------------------------------------------------------
return Array('Status'=>'Ok','Location'=>SPrintF('/GetTemp?File=%s&Name=Contract%s.pdf&Mime=application/pdf',$File,$Comp));
default:
return ERROR | @Trigger_Error(101);
}
default:
return ERROR | @Trigger_Error(101);
}
default:
return ERROR | @Trigger_Error(101);
}
#-------------------------------------------------------------------------------
?>
Этот код неработает. Договора как и прежде создаются без печати и подписи. И хоть и не принципиально важно загружать договора с печатями, все равно прошу разработчиков, если это не займет много времени, ткнуть пальцем как правильно, либо добавить возможность в код системы.
В продолжении [url=http://forum.joonte.com/viewtopic.php?f=5&t=6&start=10#p883]этого топика[/url]...
Сравнив два файла [b]hosts/billing/comp/www/InvoiceDownload.comp[/b] и [b]hosts/billing/comp/www/ContractDownload.comp[/b], пришел к выводу, что вставка печати и подписи Исполнителя в копию договора, которую пользователь может загрузить в формате PDF, не предусмотрена изначально.
Поправьте меня, если я не прав. Познания в php у меня слабые. Но если в InvoiceDownload.comp присутствует:
[code] #-----------------------------------------------------------------------
$Document = $Invoice['Document'];
#-----------------------------------------------------------------------
$DOM = new DOM($Document);
#-----------------------------------------------------------------------
$DOM->AddChild('Logo',new Tag('IMG',Array('src'=>'SRC:{Images/Logo.bmp}')));
#-----------------------------------------------------------------------
if($IsStamp){
#---------------------------------------------------------------------
$DOM->AddChild('dSign',new Tag('IMG',Array('src'=>'SRC:{Images/dSign.bmp}')));
$DOM->AddChild('aSign',new Tag('IMG',Array('src'=>'SRC:{Images/aSign.bmp}')));
$DOM->AddChild('Stamp',new Tag('IMG',Array('src'=>'SRC:{Images/Stamp.bmp}')));
}[/code]
то в ContractDownload.comp упоминаний о вставке .bmp файлов нет.
Я попробовал преобразовать ContractDownload.comp так, чтобы в PDF вставлять Stamp.bmp и dSign.bmp, но у меня ничего не вышло. Ниже приведу пример файла hosts/billing.myserver.com/comp/www/ContractDownload.comp, которым я попытался переопределить hosts/billing/comp/www/ContractDownload.comp
[code]<?php
#-------------------------------------------------------------------------------
/** @author Бреславский А.В. (Joonte Ltd.) */
/******************************************************************************/
/******************************************************************************/
Eval(COMP_INIT);
/******************************************************************************/
/******************************************************************************/
$Args = Args();
#-------------------------------------------------------------------------------
$IsStamp = (boolean) @$Args['IsStamp'];
$ContractID = (integer) @$Args['ContractID'];
#-------------------------------------------------------------------------------
if(Is_Error(System_Load('modules/Authorisation.mod','classes/DOM.class','libs/HTMLDoc.lib')))
return ERROR | @Trigger_Error(500);
#-------------------------------------------------------------------------------
$Contract = DB_Select('Contracts',Array('ID','UserID','Document'),Array('UNIQ','ID'=>$ContractID));
#-------------------------------------------------------------------------------
switch(ValueOf($Contract)){
case 'error':
return ERROR | @Trigger_Error(500);
case 'exception':
return new gException('CONTRACT_NOT_FOUND','Договор не найден');
case 'array':
#---------------------------------------------------------------------------
$Document = $Contract['Document'];
#---------------------------------------------------------------------------
if(!$Document)
return new gException('DOCUMENT_NOT_BUILDED','Документ не сформирован');
#---------------------------------------------------------------------------
$Permission = Permission_Check('ContractRead',(integer)$GLOBALS['__USER']['ID'],(integer)$Contract['UserID']);
#---------------------------------------------------------------------------
switch(ValueOf($Permission)){
case 'error':
return ERROR | @Trigger_Error(500);
case 'exception':
return ERROR | @Trigger_Error(400);
case 'false':
return ERROR | @Trigger_Error(700);
case 'true':
$DOM = new DOM($Document);
if($IsStamp){
#---------------------------------------------------------------------
$DOM->AddChild('Sign',new Tag('IMG',Array('src'=>'SRC:{Images/dSign.bmp}')));
$DOM->AddChild('Stamp',new Tag('IMG',Array('src'=>'SRC:{Images/Stamp.bmp}')));
}
#-----------------------------------------------------------------------
$Out = $DOM->Build();
if(Is_Error($Out))
return ERROR | @Trigger_Error(500);
#-----------------------------------------------------------------------
$PDF = HTMLDoc_CreatePDF('Contract',$Out);
#-----------------------------------------------------------------------
switch(ValueOf($PDF)){
case 'error':
return ERROR | @Trigger_Error(500);
case 'exception':
return ERROR | @Trigger_Error(400);
case 'string':
#-------------------------------------------------------------------
$Comp = Comp_Load('Formats/Contract/Number',$Contract['ID']);
if(Is_Error($Comp))
return ERROR | @Trigger_Error(500);
#-------------------------------------------------------------------
$Tmp = System_Element('tmp');
if(Is_Error($Tmp))
return ERROR | @Trigger_Error(500);
#-------------------------------------------------------------------
$File = SPrintF('Contract%s.pdf',Md5($_SERVER['REMOTE_ADDR']));
#-------------------------------------------------------------------
$IsWrite = IO_Write(SPrintF('%s/files/%s',$Tmp,$File),$PDF,TRUE);
if(Is_Error($IsWrite))
return ERROR | @Trigger_Error(500);
#-------------------------------------------------------------------
return Array('Status'=>'Ok','Location'=>SPrintF('/GetTemp?File=%s&Name=Contract%s.pdf&Mime=application/pdf',$File,$Comp));
default:
return ERROR | @Trigger_Error(101);
}
default:
return ERROR | @Trigger_Error(101);
}
default:
return ERROR | @Trigger_Error(101);
}
#-------------------------------------------------------------------------------
?>
[/code]
Этот код неработает. Договора как и прежде создаются без печати и подписи. И хоть и не принципиально важно загружать договора с печатями, все равно прошу разработчиков, если это не займет много времени, ткнуть пальцем как правильно, либо добавить возможность в код системы.