2011-11-09 78 views
0

的PDF我已經找到了如何創建一個Wkhtmltopdf表單,您可以輸入您的網站網址,它會自動創建一個PDF在互聯網上的教程。wkhtmltopdf不創建網站

首先我不得不下載EXEC文件wkhtmltopdf-AMD64在: http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2

有兩個代碼:

形式(在index.php粘貼):

<form action="http://localhost:8888/dev.crm/wkhtmltopdf.php" method="POST">Website:&nbsp; 
<input name="url" size="30" type="text" value="http://www.examplewebsite.com" /> 
<input type="submit" value="transform into a pdf" /> </form> 

wkhtmltopdf.php文件(粘貼在wkhtmltopdf.php):

<?php 

/**************************** 
 BEGIN CONFIG 
****************************/ 

// path to the program wkhtmltopdf 
$conf['wkhtmltopdf'] = "http://www.mydomain.com/var/wkhtmltopdf-amd64"; 

// arguments for the programma wkhtmltopdf 
// for example: --margin-top 50 --margin-bottom 30 
// look: http://code.google.com/p/wkhtmltopdf/w/list 
$conf['wkhtmltopdf_arg'] = ""; 

/**************************** 
 END CONFIG 
****************************/ 

// reads url 
$pattern = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i"; 
if (!preg_match($pattern, $_REQUEST['url'])) { 
die("no valid URL"); 
} 

// temporary file 
$output = "http://www.mydomain.com/dev.crm/tmp/output.pdf"; 

// gets the html of the document 
$html = file_get_contents($_REQUEST['url']); 

// gets the title of document 
preg_match("/\<title\>(.+)\<\/title\>/is", $html, $matches); 

// looks if there is a title 
if (empty($matches[1])) { 
$matches[1] = "output.pdf"; 
} 

// create pdf from html 
system($conf['wkhtmltopdf'] . " " . $conf['wkhtmltopdf_arg'] . " " . $_REQUEST['url'] . " " . $output); 

// output pdf to the browser 
header("Content-Type: application/pdf"); 
header("Content-Disposition: attachment; filename=\"" . $matches[1] . ".pdf\""); 
readfile($output); 

// remove pdf 
unlink($output); 

exit(0); 
?> 

表單完美並且也稱爲wkhtmltopdf.php,但不知何故我的服務器不使用wkhtmltopdf-amd64。當我按下PDF轉換按鈕時,我看到我的網頁正在加載,但它試圖打開PDF文件,但我無意中得到一個錯誤:'文件'.... pdf'不能打開,因爲它是空的。它保存PDF,但PDF大小爲0字節。

任何人有任何想法,我怎麼能解決這個問題?我認爲他沒有在我的網絡服務器上使用wkhtmltopdf-amd64文件。

//更新

我看到在表格中粘貼了localhost url。我改變了+線:

輸出= 「/ TMP /輸出.pdf」;現在我有一個新的頁面出現錯誤:警告:)系統(已在/home/.../domains/.../public_html/.../wkhtmltopdf.php安全原因上線禁用40

警告:不能更改頭信息 - 頭已經發出在/home/.../domains(輸出開始/home/.../domains/.../public_html/.../wkhtmltopdf.php:40) /.../public_html/.../wkhtmltopdf.php on line 43

警告:無法修改標題信息 - 已經發送的標題(輸出開始於/home/.../domains/.../public_html /.../wkhtmltopdf.php:40)in /home/.../domains/.../public_html/.../wkhtmltopdf.php on line 44

Warning:readfile(/ tmp/output。 pdf)[function.read文件]:未能打開流:沒有這樣的文件或目錄在/ home /.../domains/.../public_html/stage/wkhtmltopdf.php 45行

(...是我的域名。 )

回答

1

請修改

$output = "http://www.mydomain.com/dev.crm/tmp/output.pdf"; 

的東西,如:

$output = "/tmp/output.pdf"; 

我真的不認爲你可以輸出到一些URL,這樣的解決方案是讓你的服務器上的輸出。

+0

我更新我的職務。現在我得到一個錯誤。 –

+0

警告:出於安全原因,系統()已被禁用 - 看起來您無法使用系統調用。你可以在php.ini中更改 –

+0

你是如何改變php.ini中的?我的HTML文件裏沒有這個文件。我必須在裏面放什麼?它仍然不起作用。 –