近年、PDF 形式のドキュメントは、多くの人が情報を書いたり共有したりするための最初の選択肢となっています。 Web 開発では、人気の JavaScript フレームワークである Vue も、PDF ドキュメントの生成に役立つ便利なツールを多数提供します。この記事では、Vue、jsPDF、html2canvas を使用して PDF ドキュメントを生成する方法に関する完全なガイドを紹介します。
1. jsPDF と html2canvas の概要
jsPDF は、クライアントで使用できる PDF ファイルを生成する JavaScript ライブラリです。テキスト、画像、表などを含む PDF ドキュメントを生成でき、PDF ドキュメントに透かしや署名を追加するなどの機能をサポートします。
html2canvas は、HTML ページを Canvas に変換する JavaScript ライブラリです。 jsPDF を使用して PDF ドキュメントを生成する場合、html2canvas を使用してページのスクリーンショットを生成し、スクリーンショットを PDF ドキュメント内の画像に変換できます。
2. インストールと使用
jsPDF と html2canvas をインストールするには、npm を通じてこれら 2 つのライブラリの js をダウンロードできます。または公式ウェブサイトのドキュメントから。 Vue プロジェクトでは、npm を使用してインストールできます。
npm install jspdf html2canvas
<script> import jsPDF from 'jspdf' import html2canvas from 'html2canvas' export default { data() { return { pdfDoc: null // PDF文档对象 } }, methods: { async generatePDF() { // 生成PDF的方法 } } } </script>
async generatePDF() { // 获取需要转化为PDF的DOM元素 const dom = document.querySelector('#pdfContent') // 使用html2canvas将DOM元素转化为Canvas const canvas = await html2canvas(dom) // 将Canvas转换为DataURL const imgData = canvas.toDataURL('image/png') // 初始化PDF文档对象 this.pdfDoc = new jsPDF() // 定义PDF文档的页面属性 const pdfWidth = this.pdfDoc.internal.pageSize.getWidth() const pdfHeight = this.pdfDoc.internal.pageSize.getHeight() const imgWidth = canvas.width const imgHeight = canvas.height let position = 0 // 将页面截图添加到PDF文档中 this.pdfDoc.addImage(imgData, 'PNG', 0, position, imgWidth * 0.7, imgHeight * 0.7) // 如果图片的高度超出了页面高度,则需要分页 while (position < imgHeight) { position -= pdfHeight if (position < imgHeight) { this.pdfDoc.addPage() // 添加新的页面 this.pdfDoc.addImage(imgData, 'PNG', 0, position + pdfHeight, imgWidth * 0.7, imgHeight * 0.7) } } // 保存PDF文档 this.pdfDoc.save('example.pdf') }
<template> <div> <div id="pdfContent"> <p>这是一段文本</p> <img src="../assets/example.png"> </div> <button @click="generatePDF">生成PDF</button> </div> </template> <script> import jsPDF from 'jspdf' import html2canvas from 'html2canvas' export default { data() { return { pdfDoc: null } }, methods: { async generatePDF() { const dom = document.querySelector('#pdfContent') const canvas = await html2canvas(dom) const imgData = canvas.toDataURL('image/png') this.pdfDoc = new jsPDF() const pdfWidth = this.pdfDoc.internal.pageSize.getWidth() const pdfHeight = this.pdfDoc.internal.pageSize.getHeight() const imgWidth = canvas.width const imgHeight = canvas.height let position = 0 this.pdfDoc.addImage(imgData, 'PNG', 0, position, imgWidth * 0.7, imgHeight * 0.7) while (position < imgHeight) { position -= pdfHeight if (position < imgHeight) { this.pdfDoc.addPage() this.pdfDoc.addImage(imgData, 'PNG', 0, position + pdfHeight, imgWidth * 0.7, imgHeight * 0.7) } } this.pdfDoc.save('example.pdf') } } } </script>
以上がVue で jsPDF と html2canvas を使用して PDF を生成するための完全ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。