web-dev-qa-db-ja.com

JSを使用してWebページをPDFに直接保存します

Webページを直接PDFに保存したい。

私がやったことは

<form>
    <input type=button name=print value="Print" onClick="window.print()">
</form>

ただし、ページを印刷するかPDFとして保存するかを選択できます。

しかし、私が望んでいるのは、ボタンをクリックすると、PDFオプションが表示されないように直接ページを保存します。

JavaScriptに解決策はありますか?

助けてくれてありがとう。

17
Abrar Jahin

簡単な答えはノーです。javascriptのみを使用して、ユーザーがブラウザでオプションを表示するのを防ぐことはできません。

少し長めの答えは、javascriptより少しだけcanできることです。

html2canvas などのサービスを使用して、サーバー上のページにPOSTリクエストを送信できます。そのページを使用して画像をPDFに変換し、それを取得できますファイルをダウンロードとして出力します。

PHPを使用していると仮定します。

<?php
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename='screen-shot.pdf'");
// The above headers will cause the file to automatically be downloaded.
// Use a library to convert the image to a PDF here.

画像をPDF=に変換するライブラリの例は mPDF 、または [〜#〜] tcpdf [〜#〜] です。特にPHPを使用していない場合は、Googleの他のユーザーに無料で提供されます。

品質は間違いなくニースではないので、このソリューションは自分で選択するだけでは劣ることに注意してください。

6
jperezov

ここで、提案されたソリューションがHTMLを画像に変換してから、ラスター画像がPDFに変換されることに注意する必要があります。

検索可能なPDF(最高品質でアーカイブおよび印刷できる)に保存し、テキストを明確に印刷する場合は、次のオプションのいずれかを検討する必要があります。

  1. Google PDFまたはSafari(両方のブラウザがChromeファイルにページを「印刷」できるようにするための指示を提供して、ページをPDFに保存するようユーザーに依頼します。 )。たぶん、この指示を表示して、印刷ダイアログを呼び出すこともできます

  2. jsPDF(無料、オープンソース) などのツールを使用して、データからPDFを生成するために、クライアント側のJavaScriptライブラリの一部を使用します

4
Eugene