私はあなたのウェブサイトのURLを入力することができるWkhtmltopdfフォームを作成する方法についてインターネット上でチュートリアルを見つけました。wkhtmltopdfはウェブサイトのPDFを作成しません
まず私がで実行ファイルのwkhtmltopdf-AMD64をダウンロードする必要がありました:
(index.phpの中に貼り付け)形式:
<form action="http://localhost:8888/dev.crm/wkhtmltopdf.php" method="POST">Website:
<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";
:)
私の投稿を更新しました。今私はエラーが発生します。 –
警告:セキュリティ上の理由からsystem()が無効になっています。システムコールを使用できないようです。あなたはphp.iniのそれを変更することができます –
php.iniの変更をどういう意味ですか?私は自分のhtmlファイルの中にそのファイルを持っていません。私はそれの中に何を入れなければならないのですか?それでも動作しません。 –