2

私の Web アプリでは、ユーザーはデータベースに保存される HTML/CSS マークアップを作成できます。たとえば、概要ビューで、そのマークアップの「サムネイル」を提供したいと思います。

サムネイルは約 200x200px である必要があり、元のマークアップは約 900x900px で表示されることを意図しているため、そのマークアップを「スケーリング」する方法を見つける必要があります。レンダリングされたマークアップのスクリーンショットを 900px で撮ったようにする必要があります。 200pxに縮小しました。

JavaScriptまたはPHPを使用してこれが可能かどうかは誰にもわかりませんか? それとも別のサーバー側言語ですか? ActiveX などのサード パーティ製アプレットの使用は避けたいと思います。

編集:スクリーンショットがクライアント側で撮影され、サーバーに送信される、ある種のマッシュアップも問題ないと思います。

4

6 に答える 6

5

WKHTMLTOPDFを使用できます。また、WKHTMLTOIMAGE という画像を保存する機能もあります (別のディストリビューションだと思いますが、同じリンクからダウンロードできます)。exec()システムコールとしてPHPから実行できます。xvfbサーバー上で WKHTMLTOIMAGE ヘッドレスを実行できるように、仮想バッファーを使用します。これは WebKit ベースなので、生成される結果は非常に優れています...

結果の画像は、たとえば次の投稿で説明されているように、標準の PHP 関数を使用してスケーリングできます。

この質問HTML2PDF in PHP - convert utility & scripts - examples & demosに対する私の回答を確認してください。

于 2012-04-13T12:12:48.540 に答える
1

最善の策は、ジョブを 2 つの部分に分割することです。スクリーンショットを作成し、それを 200x200 に縮小します。最初の部分では、HTML をビットマップ ファイル (おそらく PNG) に直接レンダリングできるコマンド ライン ツールまたはライブラリが必要です。すぐにはわかりませんが、本当に決心しているのであれば、自分が何をしているのかを知っていれば、webkit と libpng の周りに小さなラッパーを作成するのはそれほど難しいことではないと確信しています。スケーリングには、gd (ほとんどの PHP セットアップで構成) または ImageMagick (より強力) のいずれかを使用できます。これら 2 つを取得したら、それらを組み合わせる適切な接着剤を作成するだけです。

于 2012-04-13T12:13:53.347 に答える
0

ユーザーに表示されるもののスクリーンショットを撮りたい場合は、必ずクライアント側のテクノロジーを使用する必要があります。フラッシュでこれができるはずだと思います。

この答えはおそらくあなたを助けるはずです: スクリーンショットを撮るためにHTML5 / Canvas/JavaScriptを使用する

それ以外の場合は、たとえばWKHTMLTOPDF(Michalが示唆しているように)を使用して、サーバー側で同様のビューを「再作成」しようとする場合があります。

于 2012-04-13T12:17:22.890 に答える
0

はい、これは可能です。phpフロントエンドをサービスエントリポイントとして使用するソリューションも実装しました。実際の作業は、ページがレンダリングされるPhantomJS / Xvfb、それが実行するjavascriptによって処理されます(Web上で動的に生成されるすべてのコンテンツで非常に重要です)。

基本的に、PhantomJSとXvfbフレームバッファーを使用すると、これは非常に簡単なタスクになります。詳細については、http ://code.google.com/p/phantomjs/およびhttp://skookum.com/blog/dynamic-screenshots-をご覧ください。 on-the-server-with-phantomjs /

乾杯

于 2012-04-13T12:18:14.700 に答える
0

要するに、これを行う「簡単な」方法はありません。

ただし、これはPHP を使用した Web サイトのスクリーンショットの複製にすぎません

于 2012-04-13T12:15:05.357 に答える
0

これにはhttp://www.websupergoo.com/のABCpdf を使用しました。かなりうまく機能しているようですが、無料の試用期間はありますが商用製品です。私はこの会社とは関係ありません。

于 2012-04-13T12:34:39.607 に答える