[解決済み】HTMLを画像にレンダリングする
2022-04-02 20:36:31
質問
htmlをPNGのような画像にレンダリングする方法はないでしょうか?canvasで可能なのは知っていますが、例えばdivのような標準的なhtml要素をレンダリングしたいのです。
どのように解決するのですか?
多くの選択肢があり、それぞれに長所と短所があります。
オプション1:APIを使用する
- ApiFlash (クロームベース)
- EvoPDF (htmlのオプションあり)
- グラブジット
- HTML/CSS to Image API
- ...
プロフェッショナル
- Javascriptの実行
- ほぼ完璧なレンダリング
- キャッシュオプションが正しく使用されている場合、高速に動作します。
- スケールはAPIで処理される
- 正確なタイミング、ビューポート、...
- ほとんどの場合、無料プランが提供されています
短所
- たくさん使う予定がある場合は無料ではない
オプション2: 多くの利用可能なライブラリのうちの1つを使用する
- dom-to-image
- イーサネット (wkhtmltopdfツールに含まれる)
- IMGKit (ルビー用で、Monogram をベースにしています)
- イムギキット (Python用、Monogramをベースにしたもの)
- Python-webkit2png
- ...
プロフェッショナル
- 変換が非常に速い
短所
- レンダリングが悪い
- javascriptが実行されない
- 最近のWeb機能(FlexBox、Advanced Selectors、Webfonts、Box Sizing、Media Queriesなど)をサポートしていません。
- インストールが簡単でない場合がある
- スケールアップが複雑
オプション 3: PhantomJs と多分ラッパーライブラリを使用する。
- ファントムジェイズ
- ノードウェブショット (PhantomJsのjavascriptラッパーライブラリ)
- ...
プロフェッショナル
- Javascriptの実行
- かなり速い
短所
- レンダリングが悪い
- 最近のウェブ機能(FlexBox、Advanced Selectors、Webfonts、Box Sizing、Media Queriesなど)に対応していない。
- 拡張が複雑
- 画像を読み込む必要がある場合、動作させるのはそれほど簡単ではありません ...
オプション4: Chrome Headlessとラッパーライブラリを使用する。
- クロームヘッドレス
- chrome-devtools-protocol (クロームデバツールプロトコル)
- パペッティア (Chromeヘッドレス用javascriptラッパーライブラリ)
- ...
プロフェッショナル
- Javascriptの実行
- ほぼ完璧なレンダリング
短所
-
正確に望む結果を得るのはそれほど簡単ではない。
- ページロードタイミング
- ビューポート寸法
- 拡大縮小が複雑
- かなり遅く、htmlに外部リンクが含まれる場合はさらに遅くなる
情報開示:私はApiFlashの創始者です。正直で有益な答えを提供するために最善を尽くしました。
関連
-
[解決済み】JavaScriptのisset()に相当するもの
-
[解決済み】XMLHttpRequestモジュールが定義されていない/見つからない
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み】エラー:リスン EACCES 0.0.0.0:80 OSx Node.js
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] CSSの親セレクタはありますか?
-
[解決済み】なぜHTMLは "chucknorris "を色と見なすのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】JavaScriptのisset()に相当するもの
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み】NodeJS "ESモジュールをロードするためにインポートを使用する必要があります。"
-
[解決済み】JavaScript "Uncaught TypeError: object is not a function" 連想性の質問
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】Vueのテンプレートまたはレンダー関数が定義されていない 私はどちらも使っていないのですが?
-
[解決済み】TypeError:res.jsonは関数ではありません。
-
[解決済み】JavaScriptで関数が存在するかどうかを確認する方法は?
-
[解決済み] HTML5/Canvas/JavaScriptを使用してブラウザ内のスクリーンショットを撮影する
-
[解決済み] JavaScriptでウェブページのスクリーンショットを撮る?