如何添加" Prince"库到CodeIgniter?

时间:2016-03-01 15:17:25

标签: php codeigniter wamp princexml

我想使用这个库:http://www.princexml.com/这有助于我从HTML / XML文件创建PDF文件。

在我的控制器上有这个:

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上工作?

2 个答案:

答案 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的图书馆:

  1. 将Prince.php添加到库文件夹(/application/library/Prince.php)并确保文件名首字母大写。

  2. 要将变量传递给库,必须使用数组完成,而不是简单的字符串。 $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);
    

    }

  3. 构造将变量作为一个数组抓取而不是像它应该的那样的字符串!所以我稍微编辑了__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 = ''; ... ....... ..........

  4. 这是在“王子”网站上发布的帖子: http://www.princexml.com/forum/topic/3318/princexml-and-codeigniter-how-to-add-the-library?p=1#16234

    希望这也会帮助那些需要这个的人。

    我在WAMP和UBUNTU SERVER上测试过这个。