2011-11-09 6 views
0

私はあなたのウェブサイトのURLを入力することができるWkhtmltopdfフォームを作成する方法についてインターネット上でチュートリアルを見つけました。wkhtmltopdfはウェブサイトのPDFを作成しません

まず私がで実行ファイルのwkhtmltopdf-AMD64をダウンロードする必要がありました:

(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> 

2つのコードがあります http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2

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ボタンにすると、自分のWebページがロードされているとわかりますが、PDFファイルを開こうとしますが、私はまったくエラーが出ます: 'ファイル' .... pdf 'はオープンエンドにできません。空です。 PDFを保存しますが、PDFサイズは0バイトです。

誰でもどのようにこの問題を解決できますか?私は彼が私のウェブサーバー上でwkhtmltopdf-amd64ファイルを使用しないと思う。

//更新

私はローカルホストURLを貼り付けた形で見ました。私はその行を変更しました:

出力= "/ tmp/output.pdf";新しいページでエラーが発生しました:警告:セキュリティ上の理由から、/home/.../domains/.../public_html/.../wkhtmltopdf.php on line 40

警告:ヘッダー情報を変更できません - 既に送信されたヘッダー(/home/.../domains/.../public_html/.../wkhtmltopdf.php:40で出力が開始されました)/home/.../domains /.../public_html/.../wkhtmltopdf.php on line 43

警告:ヘッダー情報は変更できません - 既に送信されたヘッダー(出力は/home/.../domains/.../public_htmlで開始されました) /.../wkhtmltopdf.php:40)in /home/.../domains/.../public_html/../wkhtmltopdf.php on line 44

警告:readfile(/ tmp/output。 pdf)[function.readファイル]:ストリームを開くことに失敗しました:/home/.../domains/.../public_html/stage/wkhtmltopdf.php on line 45

(the ...は私のドメインです。私は本当にあなたがかもしれないいくつかのURLへの出力は、そう、ソリューションは、サーバー上の出力を持つことはないと思います

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

:)

答えて

1

ようなもので

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

を変更してください。

+0

私の投稿を更新しました。今私はエラーが発生します。 –

+0

警告:セキュリティ上の理由からsystem()が無効になっています。システムコールを使用できないようです。あなたはphp.iniのそれを変更することができます –

+0

php.iniの変更をどういう意味ですか?私は自分のhtmlファイルの中にそのファイルを持っていません。私はそれの中に何を入れなければならないのですか?それでも動作しません。 –

関連する問題