ワードプレスの投稿詳細ページにhtml2canvasとjsPDFを使って、一部のHTMLをPDF化しようとしています。
このhtmlの中にGoogle mapが埋め込んでいますが、canvas作成しても、Google mapは表示できず、空白のままです。
試したこと その1
調べたところ、クロスドメインの問題で、表示できないとの記事があり、
html2canvasのオプションであるuseCORS:trueを付与すれば解決できるとのことでした。
以下、コードを試しましたが、一瞬コンソールに何かエラーが出るのですが、すぐ消えてしまうので、確認できない状態です。そして、google mapは空白のまま、canvasに出力され、解決できませんでした。
js
1 $(function(){ 2 $('#js-pdf').on('click', function() { 3 html2canvas(document.getElementById("printarea"),{ 4 scale:2, 5 useCORS: true, 6 allowTaint: false, 7 }).then(function(canvas) { 8 const imgData = canvas.toDataURL('image/png'); 9 const doc = new jsPDF(); 10 const width = doc.internal.pageSize.width; 11 doc.addImage(imgData, 'PNG', width*0.05, width*0.05, width * 0.9, 0); 12 doc.save("sample.pdf"); 13 }); 14 }); 15 });
試したこと その2
また、クロスドメインで画像を直接ロードしようとする代わりに、ローカルプロキシを使用して画像を取得し、保存してhtml2canvasに渡すことができるhtml2canvas-proxyを使用すれば、解決策の記事がありましたので、
同階層にhtml2canvas-proxyからダウンロードしてきたhtml2canvasproxy.phを配置し、
cacheディレクトリ(html2canvas-proxyのREADMEの設定欄にdefine('H2CP_PATH', 'cache');が画像が保存されるフォルダと記入がありましたので、これでいいのかわからないですが、とりあえずこの名前にしました。)も同階層に作成して、以下のコードで試しました。
コンソールのエラーは無くなりましたが、google mapは空白のままで、なぜかその部分にワードプレスのTOP上部の画像がcanvasに出力される状態になりました。
ワードプレスのTOP上部の画像ではなく、google mapの地図画像を表示したいのですが、うまくいきません。
js
1$(function(){ 2 $('#js-pdf').on('click', function() { 3 html2canvas(document.getElementById("printarea"),{ 4 scale:2, 5 proxy: './html2canvasproxy.php', 6 useCORS: false, 7 }).then(function(canvas) { 8 const imgData = canvas.toDataURL('image/png'); 9 const doc = new jsPDF(); 10 const width = doc.internal.pageSize.width; 11 doc.addImage(imgData, 'PNG', width*0.05, width*0.05, width * 0.9, 0); 12 doc.save("sample.pdf"); 13 }); 14 }); 15 });
問題が解決できず、困っております。
こちら解決のご協力、アドバイスありましたら、大変助かります。
※情報不足がありましたら、申し訳ございません。
補足情報(ツールのバージョン)
html2canvas 1.0.0-alpha.12
回答1件
あなたの回答
tips
プレビュー