2011-10-01 165 views
0

所以基本上我一直在做的是將一個xml文件轉換爲格式良好的pdf與wamp。 下面的代碼是我的想法的簡單例證。我從解析xml到html的過程中學到了,我想這一切都是關於告訴xml解析器你想要在屏幕上顯示的方式。然後,我做了它如下:PHP FPDF - 「調用一個非對象的成員函數Stuff()」

<?php 
require('fpdf.php'); 

class PDF extends FPDF 
{ 
    //...I skipped couple of functions like Footer() 

    //Display stuff from string in pdf manner 
    function Stuff($data) 
    { 
     $this->SetFont('Arial','',12); 
     $this->Cell(0,4,"$data",0,1,'L',true); 
     $this->Ln(1); 
    } 
} 

//Parse xml start tags 
function start($parser,$element_name,$element_data) 
{ 
     ...... 
}  

//Parse xml end tags 
function stop($parser,$element_name) 
{ 
     ...... 
} 

//Parse xml contents between start tags and end tags 
function data($parser,$data) 
{ 
     $pdf->Stuff($data); 
} 

//create pdf page 
$pdf = new PDF(); 
$pdf->AliasNbPages(); 
$pdf->AddPage(); 
$pdf->SetFont('Times','',12); 

//Parse xml file to pdf 
$parser=xml_parser_create(); 
xml_set_element_handler($parser,"start","stop"); 
xml_set_character_data_handler($parser,"char"); 
$fp=fopen("test.xml","r"); 

while($data=fread($fp,4096)) 
{ 
    xml_parse($parser,$data,feof($fp)) or 
    die (sprintf("XML Error:$s at line $d", 
    xml_error_string(xml_get_error_code($parser)), 
    xml_get_current_line_number($parser))); 
} 

xml_parser_free($parser); 

?> 

不幸的是我,因爲我在title.However描述收到這樣的警告,我測試了我的XML解析器的功能與我的啓動,停止和個別數據的功能,他們所有的工作fine.Then我試圖轉換XML到html,一切都還是不錯的。它主要是轉換爲PDF格式,以便在處理我的想法時遇到這種情況。 任何人都可以給我一些關於這個問題的提示嗎?

+0

在你的'data'功能,您引用'$ PDF - >東西()'但沒有變量'$ pdf'所以這就是爲什麼你看到的錯誤。因爲'$ pdf'不是一個對象,因爲它不存在。你的意思是'$ parser-> Stuff($ data)'?或者如果這個函數在你的類中,那麼也許它應該是'$ this-> Stuff($ data)' – drew010

+0

我試圖在我的類中包含像stuff()這樣的幾個內容顯示函數,但是wamp警告我像「無法在...中調用處理程序start()「。 – jasonkim

+0

事情是,我需要調用類PDF中的幾個函數來顯示PDF文件中的東西。 – jasonkim

回答

1

在您的數據功能中,您引用了$pdf->Stuff(),但沒有變量$pdf,因此這就是您看到錯誤的原因。因爲$pdf不是一個對象,因爲它不存在。你的意思是$parser->Stuff($data)?或者如果這個函數在你的類中,那麼也許它應該是$this->Stuff($data)

你可以在你的類中有處理程序,你只需要指定它們有點不同。你可以做

xml_set_object ($parser, $this); 
xml_set_element_handler ($parser, 'start', 'stop'); 
xml_set_character_data_handler ($parser, 'char'); 
相關問題