tag:crieit.net,2005:https://crieit.net/tags/poiitme/feed
「poiitme」の記事 - Crieit
Crieitでタグ「poiitme」に投稿された最近の記事
2018-12-28T19:11:14+09:00
https://crieit.net/tags/poiitme/feed
tag:crieit.net,2005:PublicArticle/14700
2018-12-28T19:11:14+09:00
2018-12-28T19:11:14+09:00
https://crieit.net/posts/Puppeteer-on-AWS-Lambda
Puppeteer on AWS Lambda のスクリーンショットで文字が豆腐になるので、ウェブフォントと絵文字フォントをインストール
<h2 id="状況"><a href="#%E7%8A%B6%E6%B3%81">状況</a></h2>
<p>現在開発中の https://poiit.me で puppeteer のスクリーンショットを使って動的OGPをつくっています。<br />
CSSで動的な画像をデザインできるし、一つ lambda 関数を作っておけば、いろんなところで応用ができるのでいいですね。</p>
<p>が、今回は絵文字が、豆腐になってしまったのでその対処法。</p>
<p><img src="https://qiita-image-store.s3.amazonaws.com/0/6531/6a6ea738-cf5e-15cb-4eb3-acb2dc85e5d8.jpeg" alt="yahsan2-ogp.jpg" /></p>
<h2 id="参考記事"><a href="#%E5%8F%82%E8%80%83%E8%A8%98%E4%BA%8B">参考記事</a></h2>
<p>ベースはこちらの記事を参考にしました。<br />
<a target="_blank" rel="nofollow noopener" href="https://qiita.com/zyyx-matsushita/items/c33f79e33f242395019e">https://qiita.com/zyyx-matsushita/items/c33f79e33f242395019e</a></p>
<p>基本は参考Qiita をベースに対応できましたが、絵文字フォントがどこにあるのか結構探したので、備忘録的にメモ。</p>
<h2 id="絵文字フォントダウンロードと設置"><a href="#%E7%B5%B5%E6%96%87%E5%AD%97%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A8%E8%A8%AD%E7%BD%AE">絵文字フォントダウンロードと設置</a></h2>
<p>Google の Noto Color Emoji はこちらから ダウンロードできました。<br />
<a target="_blank" rel="nofollow noopener" href="https://www.google.com/get/noto/#noto-emoji-zsye-color">https://www.google.com/get/noto/#noto-emoji-zsye-color</a></p>
<p><strong>他のダウンロード可能な絵文字フォントを知っていたら、是非ダウンロード場所教えてください!</strong></p>
<p>で、ダウンロードしたファイルを解答し <code>/.font/NotoColorEmoji.ttf</code> に設置</p>
<h2 id="WEBフォント"><a href="#WEB%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88">WEBフォント</a></h2>
<p>こちらは絵文字以外のフォントについては、WEBフォントをつかっています。</p>
<p>screenshot を撮る前に head に追加してやれば反映されるはず。</p>
<pre><code class="js"> await page.evaluate(() => {
var style = document.createElement('style')
style.textContent = `
@import url('//fonts.googleapis.com/css?family=M+PLUS+Rounded+1c|Roboto:300,400,500,700|Material+Icons');
div, input, a, p{ font-family: "M PLUS Rounded 1c", sans-serif; };`
document.head.appendChild(style);
document.body.style.fontFamily = "'M PLUS Rounded 1c', sans-serif";
})
</code></pre>
<p>その後、長めに wait させたないとフォントが反映されていないことがあるので注意</p>
<pre><code> await page.waitFor(3000);
</code></pre>
<p>こちらの記事を参考にしています。<br />
<a target="_blank" rel="nofollow noopener" href="https://qiita.com/chimame/items/04c9b45d8467cf32892f">https://qiita.com/chimame/items/04c9b45d8467cf32892f</a></p>
<h2 id="関数実行"><a href="#%E9%96%A2%E6%95%B0%E5%AE%9F%E8%A1%8C">関数実行</a></h2>
<p>lambada で呼び出す関数で、フォントをサーバーにインストールする <code>fc-cache</code> コマンド実行してから、<br />
puppeteer の screenshot などを実行すれば、ちゃんと絵文字が反映されているはずです。</p>
<p>アップロードすれば終了です。</p>
<p><img src="https://qiita-image-store.s3.amazonaws.com/0/6531/54eae76b-6c6d-e567-d400-0c18bc462718.jpeg" alt="yahsan2-ogp-1.jpg" /></p>
<p>めでたし!</p>
<p>serverless を使ったベーシックな puppeteer on lambda は github に置いてあるので必要あれば。<br />
<a target="_blank" rel="nofollow noopener" href="https://github.com/yahsan2/puppeteer-example-on-serverless-lambda">https://github.com/yahsan2/puppeteer-example-on-serverless-lambda</a></p>
<p>この記事のフォント反映バージョンも要望あればで公開しますので、コメントください〜!</p>
<h3 id="poiit というサービスつくっています!"><a href="#poiit+%E3%81%A8%E3%81%84%E3%81%86%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%A4%E3%81%8F%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%EF%BC%81">poiit というサービスつくっています!</a></h3>
<p>この記事がもし参考になれば、50円からサポートお願いします〜!<br />
<a target="_blank" rel="nofollow noopener" href="https://poiit.me/yahsan2/"><img src="http://res.cloudinary.com/dcsqopmuq/image/upload/v1545924831/poiit-production/yahsan2/yahsan2-ogp.jpg" alt="yahsan2-ogp-1.jpg" title="画像タイトル" /></a><br />
<a target="_blank" rel="nofollow noopener" href="https://poiit.me/yahsan2/">https://poiit.me/yahsan2/</a></p>
yahsan2