我想使用这个库:http://www.princexml.com/这有助于我从HTML / XML文件创建PDF文件。
我从这里下载了PHP zip文件:http://www.princexml.com/download/wrappers/并将其添加到我的"库" codeigniter目录中的文件夹。 据我所知,我只需要包含/调用库并定期使用它的功能。 https://ellislab.com/codeigniter/user-guide/general/creating_libraries.html
我正在使用WAMP(Windows),因此我创建了一个别名C:\Program Files (x86)\Prince\engine\bin
,其中找到了prince.exe,并将其称为" prince" (http://localhost/prince
)。
在我的控制器上有这个:
public function banana(){
$this->load->library('prince');
$prince = new Prince('http://localhost/prince/prince.exe');
$xmlPath = 'http://localhost/temp/test.html';
$this->prince->convert_file_to_passthru($xmlPath);
}
我收到了这些错误:
遇到PHP错误
严重性:警告
消息:缺少Prince :: __ construct()的参数1,调用 第1247行的C:\ wamp \ www \ tools \ system \ core \ Loader.php并定义了
文件名:libraries / prince.php
行号:48
回溯:
文件:C:\ wamp \ www \ tools \ application \ libraries \ prince.php行:48 功能:_error_handler
文件:C:\ wamp \ www \ tools \ application \ controllers \ aso \ Cli_kas.php行: 304功能:库
文件:C:\ wamp \ www \ tools \ index.php行:292功能:require_once
遇到PHP错误
严重性:注意
消息:未定义的变量:exePath
文件名:libraries / prince.php
行号:50
回溯:
文件:C:\ wamp \ www \ tools \ application \ libraries \ prince.php行:50 功能:_error_handler
文件:C:\ wamp \ www \ tools \ application \ controllers \ aso \ Cli_kas.php行: 304功能:库
文件:C:\ wamp \ www \ tools \ index.php行:292功能:require_once
遇到PHP错误
严重性:警告
消息:proc_open():CreateProcess失败,错误代码-87
文件名:libraries / prince.php
行号:796
回溯:
文件:C:\ wamp \ www \ tools \ application \ libraries \ prince.php行:796 功能:proc_open
文件:C:\ wamp \ www \ tools \ application \ libraries \ prince.php行:528 功能:convert_internal_file_to_passthru
文件:C:\ wamp \ www \ tools \ application \ controllers \ aso \ Cli_kas.php行: 311功能:convert_file_to_passthru
文件:C:\ wamp \ www \ tools \ index.php行:292功能:require_once
遇到未捕获的异常
类型:异常
消息:无法执行"" --structured日志=缓冲 " http://localhost/temp/test.html" -o -
文件名:C:\ wamp \ www \ tools \ application \ libraries \ prince.php
行号:814
回溯:
文件:C:\ wamp \ www \ tools \ application \ libraries \ prince.php行:528 功能:convert_internal_file_to_passthru
文件:C:\ wamp \ www \ tools \ application \ controllers \ aso \ Cli_kas.php行: 311功能:convert_file_to_passthru
文件:C:\ wamp \ www \ tools \ index.php行:292功能:require_once
这是我第一次从CodeIgniter运行外部库,我不知道该怎么做,并且codeigniter文档没有提到太多信息。
创建ALIAS没有用,所以我认为这就是为什么它不能识别exePath
的变量。
我如何所有" Prince"库并让它在CodeIgniter上工作?
答案 0 :(得分:0)
你应该试试这个:
public function banana(){
// it should be a local path instead of URL
$exe_path = 'c:\\some_folder\prince\prince.exe';
// you can add parameter for the constructor call
$this->load->library('prince', $exe_path);
// it also should be a local path where the folder should be writable by apache
$xmlPath = 'c:\\some_folder\temp\test.html';
$this->prince->convert_file_to_passthru($xmlPath);
}
答案 1 :(得分:0)
使用“Prince”作为CI的图书馆:
将Prince.php添加到库文件夹(/application/library/Prince.php)并确保文件名首字母大写。
要将变量传递给库,必须使用数组完成,而不是简单的字符串。 $exePath = array('exePath' => 'C:\Program Files (x86)\Prince\engine\bin\prince.exe');
public function banana(){
// it should be a local path instead of URL
$exePath = array('exePath' => 'C:\Program Files (x86)\Prince\engine\bin\prince.exe');
// you can add parameter for the constructor call
$this->load->library('prince', $exePath);
// it also should be a local path where the folder should be writable by apache
$xmlPath = 'C:\wamp\www\tools\files\banana\test.html';
$pdfPath = 'C:\wamp\www\tools\files\banana\test.pdf';
$this->prince->convert_file_to_file($xmlPath, $pdfPath);
}
构造将变量作为一个数组抓取而不是像它应该的那样的字符串!所以我稍微编辑了__construct
:
public function __construct($exePathArr)
{
// var_dump($exePathArr);
$exePath = "banana"; // just to make sure that this var is a string :P
// var_dump($exePath);
$exePath = $exePathArr['exePath'];
// var_dump($exePath);
$this->exePath = $exePath;
$this->styleSheets = '';
$this->scripts = '';
...
.......
..........
这是在“王子”网站上发布的帖子: http://www.princexml.com/forum/topic/3318/princexml-and-codeigniter-how-to-add-the-library?p=1#16234
希望这也会帮助那些需要这个的人。
我在WAMP和UBUNTU SERVER上测试过这个。