PDF 文書である電子契約書をユーザーにエクスポートするという新しい要件を受け取りました。バックエンドで PHP を使用しているため、当然 PHP ソリューションを探します。 Packagist から何万、何十万もダウンロードされたライブラリを含むいくつかのライブラリを調べましたが、残念なことに、PHP は世界で最高の言語ではありますが、控えめに言っても、PHP 開発者の美的レベルは非常に低いと言わざるを得ません。 、無力です...
2 番目の問題は、完全なドキュメントを組み立てるために、PHP が PDF を 1 行ずつ、要素ごとに何度も「組み立て」なければならないことです。スタイルをコントロールするのは非常に手間がかかり、難しいです。 HTML からの変換にも同様の問題があります。しばらく勉強していると、卵がどんどん痛くなってきたように感じました。ああ、もう忘れて、Phantomjs に切り替えましょう。
Phantomjs はコマンドラインの Webkit ツールであり、ページを出力しないブラウザとして理解できますが、Webkit によってブラウザのさまざまな機能がサポートされます。したがって、Web ページのレンダリングと画像のキャプチャは簡単です。
Phantomjs を使用して 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
写真と本文は関係ありません。実は、今日赤ちゃんを出産した大学時代の友人が、彼女を祝福するために彼女の奇妙な写真を投稿したのです。