0

このライブラリを使用したい: http://www.princexml.com/これは、HTML/XML ファイルから PDF ファイルを作成するのに役立ちます。

  • PHP zip ファイルをhttp://www.princexml.com/download/wrappers/からダウンロードし、codeigniter ディレクトリの "libraries" フォルダーに追加しました。私が知っていることから、ライブラリをインクルード/呼び出して、その関数を定期的に使用するだけです。 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 がありません。C:\wamp\www\tools\system\core\Loader.php の 1247 行で呼び出され、定義されています

ファイル名: 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-log=buffered " 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 で動作させるにはどうすればよいですか?

4

2 に答える 2

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);
}
于 2016-03-04T14:36:51.723 に答える
0

CI で "Prince" をライブラリとして使用するには:

  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 = ''; ... ....... ..........

これは、「Prince」Web サイトで開かれた投稿です: http://www.princexml.com/forum/topic/3318/princexml-and-codeigniter-how-to-add-the-library?p=1#16234

これが必要な人にも役立つことを願っています。

これを WAMP と UBUNTU SERVER の両方でテストしました。

于 2016-03-06T12:05:12.100 に答える