JavaScriptによるPDFファイルの生成


268

WebページからXMLデータをPDFファイルに変換しようとしていますが、JavaScript内で完全に変換できることを望んでいました。テキスト、画像、簡単な形を描くことができるようにする必要があります。私はこれを完全にブラウザでできるようになりたいです。

回答:


446

JavaScriptだけを使用してPDFを生成するjsPDFというライブラリを書いたところです。まだ非常に若いので、すぐに機能とバグ修正を追加する予定です。また、データURIをサポートしないブラウザーでの回避策についていくつかのアイデアを得ました。それはリベラルなMITライセンスの下でライセンスされています。

私はそれを書き始める前にこの質問に出くわし、戻ってきてあなたに知らせたいと思っていました:)

JavaScriptでPDFを生成する

例:「Hello World」PDFファイルを作成します。

// Default export is a4 paper, portrait, using milimeters for units
var doc = new jsPDF()

doc.text('Hello world!', 10, 10)
doc.save('a4.pdf')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.5/jspdf.debug.js"></script>


10
私はjsPDFを部分的に刺激しましたか?あなたが発表した日、私はjsPDFについて学びました。これまでのところ素晴らしい。私はエビと一緒に行くことになりました。なぜなら、それは私の要件にとって簡単に最高のPDF生成ライブラリだからです。自分がデプロイしているシステムでRubyを使用するのは前向きではないので、ブラウザーですべての作業を行いたいと思っています。私はjsPDFを非常に注意深く見ています。手伝いたいのですが、時間が限られています。それは将来変わるかもしれません。
アメーバ

7
あなたはそれをいくらか刺激しました:)、私はそれがすでに存在しているかどうかを確認するためにインターネットを見回していて、一部の人々がそれが有用であると思うだろうと思いました。お手伝いしたい場合はお知らせください。Twitterの@MrRioです。
ジェームズホール

23
それはまだ非常に生きています。0.9.0rc2本日リリースされました。
James Hall

87
@JamesHall、これを書くために取らなければならないすべての仕事、そしてあなたが自分の利益のためにそれを商業化できたときに世界をより良い場所にするためにMITライセンスを取得してくれたことに感謝したいと思います。
Charles Burns

16
反対投票者は私たちに「より良い」アイデアやソリューションを提供できますか?これはすばらしい努力です。
OnurYıldırım2015

138

言及する価値のある別のJavaScriptライブラリはpdfmakeです。

ブラウザーサポートはjsPDFほど強力ではないようです。また、図形のオプションもないようですが、テキストの書式設定のオプションは、現在jsPDFで利用できるオプションよりも高度です。


7
この答えはもっと賛成されるべきです、pdfmakeはjspdfよりもはるかに堅牢です。ただし、余談ですが、PDFKitライブラリのラッパーです。
vittore 2015

2
別の注意点として、jspdfはutf-8をサポートしておらず、pdfmakeはデフォルトのフォントに対してのみutf-8をサポートしています。
2016

「pdfmake.min.js-0.1.22-9時間前」死んでいない、この日更新。
zenbeni 16

2つの遊び場を比較すると、私にとってjsPDFは「グラフィック」PDFの作成を対象としていますが、pdfmakeは適切にフォーマットされた「プレーン」ドキュメントの生成を対象としているようですが、一般的なテキストの書式設定には多くのオプションがあるようです。
cslotty 2017

このIEはフレンドリーですか?
Wildhammer

59

私はPDFKitを維持しています。これはpdfmakeにも使用されます(すでにここで説明されています)。Nodeとブラウザの両方で動作し、他のライブラリではサポートされていない一連の機能をサポートしています。

  • Unicodeをサポートするサブセット化フォントの埋め込み。
  • 多くの高度なテキストレイアウト(列、改ページ、完全なUnicode改行、基本的なリッチテキストなど)。
  • 高度なタイポグラフィ(OpenType / AATの合字、文脈依存の置換など)のために、さらに多くのフォントに取り組んでいます。近日公開:興味がある場合はfontkitブランチをご覧ください。
  • その他のグラフィックス:グラデーションなど
  • browserifyやストリームなどの最新のツールで構築されています。ブラウザとノードの両方で使用できます。

完全なチュートリアルについては、http: //pdfkit.org/をチェックして、PDFKitが実行できることを自分で確認してください。また、どのような種類のドキュメントを作成できるかの例については、PDFKit自体を使用して、いくつかのMarkdownファイルから生成されたPDFとしてドキュメントを確認してください:http ://pdfkit.org/docs/guide.pdf 。

こちらのブラウザでインタラクティブに試すこともできます:http : //pdfkit.org/demo/browser.html


これはサーバー側のライブラリではありませんか?議論はクライアント側のjsライブラリに関するものだと思います。
Ash Catchem 2015年

10
PDFKitは回答で述べたようにNodeとブラウザの両方で動作します。ブラウザのデモへのリンクを参照してください。
devongovett 2015年

これは画像を圧縮しますか?camscannerと同様に機能するWebアプリに取り組んでおり、圧縮とマルチページ形式を活用するためのJavaScriptによるPDF作成を探しています。
Trevor

@devongovett あなたの図書館についての私の質問を見ることができますか?
ninbit

8

別の興味深いプロジェクトはtexlive.jsです。

ブラウザで(La)TeXをPDFにコンパイルできます。


hello worldの例はうまくレンダリングされますが、完了するまでに約30秒かかります。
Sam Sippe 2017

2

この無料サービスを使用するには、任意のURL(例:http : //www.phys.org)からpdfを作成するリンクを追加します

http://freehtmltopdf.com/?convert=http%3A%2F%2Fwww.phys.org&size=US_Letter&orientation=portrait&framesize=800&language=en


1
更新:このfreehtmltopdf.comサービスを確認したところ、利用できなくなったとのことでした。それは素晴らしかったように思えます!
Mark Duiker

今チェック-動作します。そしてそれは素晴らしいです、私は私が各pdfに支払うサービスを使います、そしてコーディングする必要があります、これはそのような問題ソルバーです。
Sergey Sob 2016

-29

JavaScriptでメモリ内にPDFを生成できたとしても、そのデータをユーザーに転送する方法に問題があります。JavaScriptがユーザーにファイルをプッシュするだけでは困難です。

ユーザーにファイルを取得するには、ブラウザーに保存ダイアログを表示させるためにサーバー送信を実行する必要があります。

そうは言っても、PDFを生成することはそれほど難しくありません。仕様を読んでください。


1
それはまったく難しくありません。たとえば、それはData-URIのen.wikipedia.org/wiki/Data_URI_schemeで動作するようです(以前に実行したことがありましたが、Data-URIを使用したかどうか覚えていません)。
ビョルン

58
最近JavaScriptで簡単にファイルを作成できます。(私は未来の出身です)
デレク━會功夫

5
最近は本当にシンプルです。例:github.com/ChenWenBrian/FileSaver.js
roy riojas

9
@FrankKrueger解答を削除すると、6ポイントを獲得できます:P
KamilKiełczewski16年

8
@FrankKreuger、「仕様を読んでください」は、SOに対して正しい答えになることはほとんどありません。
クリシュナンベンキテスワラン2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.