Как добавить & quot; принца & quot; библиотека для CodeIgniter?

Я хочу использовать эту библиотеку: http://www.princexml.com/ Это помогает мне создавать файлы PDF из файлов HTML / XML.

  • Я скачал ZIP-файл PHP отсюда: 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 и называется «принц» (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

Серьезность: Предупреждение

Сообщение: отсутствует аргумент 1 для Prince :: __ construct (), вызванного в
C: \ wamp \ www \ tools \ system \ core \ Loader.php в строке 1247 и определен

Имя файла: library / prince.php

Номер строки: 48

Backtrace:

Файл: C: \ wamp \ www \ tools \ application \ library \ 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

Имя файла: library / prince.php

Номер строки: 50

Backtrace:

Файл: C: \ wamp \ www \ tools \ application \ library \ 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

Имя файла: library / prince.php

Номер строки: 796

Backtrace:

Файл: C: \ wamp \ www \ tools \ application \ library \ prince.php Строка: 796
Функция: proc_open

Файл: C: \ wamp \ www \ tools \ application \ library \ 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-log = buffered
«Http: //localhost/temp/test.html«-о —

Имя файла: C: \ wamp \ www \ tools \ application \ library \ prince.php

Номер строки: 814

Backtrace:

Файл: C: \ wamp \ www \ tools \ application \ library \ 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,

Как мне собрать всю библиотеку «Принц» и заставить ее работать на CodeIgniter?

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);
}
0

Другие решения

Чтобы использовать «Принц» в качестве библиотеки на 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 = '';
    ...
    .......
    ..........

Это сообщение, открытое на сайте «Принц»:
http://www.princexml.com/forum/topic/3318/princexml-and-codeigniter-how-to-add-the-library?p=1#16234

Надеюсь, это поможет людям, которым это тоже нужно.

Я проверял это как на WAMP, так и на UBUNTU SERVER.

0

По вопросам рекламы [email protected]