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