2016-12-20 16 views
0

我正在一個項目上,它對我來說有點太難... 我解釋。未定義的方法與作曲家庫和CodeIgniter

我需要用PHP解析PDF文件,以分析這些文件的內容。爲此,我使用pdfparser.org庫。 我第一次試圖通常包含這個庫,沒有任何結果。 閱讀完所有的互聯網後,由於這個庫需要安裝Composer(並且在我的虛擬主機上,我無法安裝Composer),所以我在Windows PC上應用了Composer過程。我用「autoload.php」文件得到了「vendor」文件夾。好!

然後,我試圖在CodeIgniter中正確包含它。我選擇的解決方案是:

  1. 在應用程序/庫創建文件 「Pdfparser.php」/

    class Pdfparser 
    { 
        public function __construct() 
        { 
         require_once APPPATH."/third_party/pdfparser.php"; 
        } 
    } 
    
  2. 然後,我在應用/ THIRD_PARTY /加PdfParser 「作曲」 的應用,而在/third_party/pdfparser.php我簡單地說:

    if (!defined('pdfparser')) { 
        define('pdfparser', dirname(__FILE__) . '/'); 
        require(pdfparser . 'pdfparser/autoload.php'); 
    } 
    
  3. 然後,我這個庫添加到笨/application/config/autoload.php爲:

    $autoload['libraries'] = array('pagination', 'form_validation','email','upload','pdfparser'); 
    
  4. 最後,我把它在我的功能應用/控制器/ admin.php的:

    $parser = new Pdfparser(); 
         $pdf = $parser->parseFile(myfile.pdf); 
         $full_text = $pdf->getText(); 
    

    (這4塊中的代碼是直接從官方文檔在這裏拍攝:http://www.pdfparser.org/documentation和剛剛改編)。

  5. 但現在,我打破了互聯網......我有這樣的錯誤:

    PHP Fatal error: Call to undefined method PdfParser::parseFile() in /path/application/controllers/Admin.php on line 3083 
    
  6. 說完看着笨文檔後,我嘗試了作曲自動加載磁帶機添加到核心......在應用/ config/autoload.php我把:

    $config['composer_autoload'] = APPPATH . "/third_party/pdfparser/autoload.php"; 
    
  7. 當然,它不起作用。而且我迷路了......

+2

嘗試像這樣...'$配置[「composer_autoload」] = TRUE;' –

+0

希克馬特:我試了一下,但僅此而已...... 然後,我想直接加我作曲庫的應用程序/文件夾供應商,用$ config ['composer_autoload'] = TRUE; 但沒有更好的... – John

回答

1

使用作曲家正常。$config['composer_autoload'] = TRUE;並在您的應用程序文件夾中運行composer install smalot/pdfparser。那麼你的控制器內它應該運行,如果使用的作曲家,包括在您的項目庫,你做這樣的事情不能用使用:)

use Smalot\PdfParser; 
class My_controller extends CI_Controller { 
} 
+0

這是問題!我無法在我的網絡託管中執行此操作... 而且例如,如果我這樣做在我的本地存儲上,然後上傳生成的「供應商」文件夾,它會工作嗎? – John

+0

我也沒有通過ssh訪問,它的工作方式,你已經描述 – cssBlaster21895

+0

好吧,它似乎現在工作,因爲它發現類和執行代碼!唯一的是,我得到一個「TCPDF_PARSER錯誤:清空PDF數據。」...我檢查它來自哪裏... 謝謝! – John

0

替換代碼

class Pdfparser 
{ 
    public function __construct() 
    { 
     require_once APPPATH."/third_party/pdfparser.php"; 
    } 
} 

<?php 

require_once APPPATH."/third_party/pdfparser.php"; 
class Pdfparser 
{ 
    public function __construct() 
    { 
    } 
} 

包括您在課堂之外。

而不是使用自動加載您可以加載庫這樣的...

$this->load->library('library_name'); 

例子:

$this->load->library('pdfparser'); 
+0

謝謝!我已經嘗試了兩種解決方案,並且我得到了同樣的錯誤...我失去了希望:'( – John

1

composer install smalot/pdfparser 

然後,包括新安裝的庫,您只需要包含作曲家提供的「autoload.php」文件:

<?php 

include 'vendor/autoload.php'; 

$parser = new Pdfparser(); 
$pdf = $parser->parseFile(myfile.pdf); 
$full_text = $pdf->getText(); 

var_dump($full_text); 

沒有更多。

+0

cf這篇文章使用作曲家autoload在代碼點燃器上下文中:http://stackoverflow.com/a/32339874/1931915 –