ホームページ > バックエンド開発 > PHPチュートリアル > Phantomjs を使用して PDF をエクスポートする

Phantomjs を使用して PDF をエクスポートする

WBOY
リリース: 2016-06-23 13:03:18
オリジナル
1216 人が閲覧しました

PDF 文書である電子契約書をユーザーにエクスポートするという新しい要件を受け取りました。バックエンドで PHP を使用しているため、当然 PHP ソリューションを探します。 Packagist から何万、何十万もダウンロードされたライブラリを含むいくつかのライブラリを調べましたが、残念なことに、PHP は世界で最高の言語ではありますが、控えめに言っても、PHP 開発者の美的レベルは非常に低いと言わざるを得ません。 、無力です...

2 番目の問題は、完全なドキュメントを組み立てるために、PHP が PDF を 1 行ずつ、要素ごとに何度も「組み立て」なければならないことです。スタイルをコントロールするのは非常に手間がかかり、難しいです。 HTML からの変換にも同様の問題があります。しばらく勉強していると、卵がどんどん痛くなってきたように感じました。ああ、もう忘れて、Phantomjs に切り替えましょう。

Phantomjs はコマンドラインの Webkit ツールであり、ページを出力しないブラウザとして理解できますが、Webkit によってブラウザのさまざまな機能がサポートされます。したがって、Web ページのレンダリングと画像のキャプチャは簡単です。

Phantomjs を使用して PDF を出力するのは非常に簡単です:

  • まず、幅と高さに同意し (印刷の便宜上、電子契約書はページに分割され、ヘッダーとフッターが必要です)、ページ テンプレートを完成させます。 。
  • Phantomjs スクリプトを完成させます。ドキュメントの生成のみに使用されるため、Web サービスは必要ありません。
  • PHP を使用してスクリプトを呼び出し、PDF ドキュメントを生成し、ユーザーがダウンロードできるようにファイルを読み取ります。

これの利点は、いつでも効果をプレビューできること、HTML は読みやすく変更しやすいこと、そして PHP のコンテンツを置き換えるのにも便利であることです。そして、コードは公式の例と組み合わせると非常に簡単で、すぐに作成できました:

'use strict';var page = require('webpage').create()  , system = require('system')  , args = system.args  , url = args.length > 1 ? args[1] : 'http://www.dianjoy.com/'  , filename = args.length > 2 ? args[2] : 'tmp';page.viewportSize = {  width: 800,  height: 1100};url = decodeURIComponent(url);page.open(url, function (status) {  console.log(status);  if (status === 'success') {    page.render('/tmp/pdf/' + filename + '.pdf');  }  phantom.exit();});
ログイン後にコピー

このコードをデプロイする際の最大の問題は、GFW によって npm install phantomjs -g が失敗し、zip を直接ダウンロードしても機能しないことです。 Amazon S3 に配置されます)。したがって、私たちは病気を応援し続け、ファング校長や他の壁建設者をできるだけ早く殺害します。

2 番目の問題は、PHP がスクリプトの実行に失敗することです。ドキュメントを参照するだけで非常に簡単です:

exec('/usr/local/phantomjs/bin/phantomjs pdf.js http://meathill.com/ meathill');
ログイン後にコピー

しかし、実際には、ドキュメントもリターンも生成されませんでした。長い間デバッグした後、Apktool を使用してインストールを解析したときに同様の問題が発生したことを突然思い出しました。少し前にパッケージを作成したので、最後に 2>&1 を追加しました。問題は解決しました。

Googleのことはよくわかりません。それについては後で話しましょう。

その他の参考文献:

shell_exec

写真と本文は関係ありません。実は、今日赤ちゃんを出産した大学時代の友人が、彼女を祝福するために彼女の奇妙な写真を投稿したのです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート