vue3 ts pdfjs-dist base64 生成pdf文件
时间: 2023-07-16 08:15:53 浏览: 141
高亮img、pdf重点部分(html2canvas、pdfjs-dist、react-pdf)demo
可以使用 `pdfjs-dist` 库来解析 PDF 文件,然后使用 `FileSaver` 库将生成的 PDF 文件保存到本地。以下是一个使用 TypeScript 和 Vue 3 的示例代码:
```typescript
<template>
<div class="container">
<input type="file" @change="onFileChange">
<button @click="generatePdf">Generate PDF</button>
</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { PDFDocument } from 'pdf-lib';
import { saveAs } from 'file-saver';
export default defineComponent({
name: 'PdfGenerator',
data() {
return {
file: null as File | null,
pdfDoc: null as PDFDocument | null,
};
},
methods: {
async onFileChange(event: Event) {
const file = (event.target as HTMLInputElement).files?.[0];
if (!file) return;
const base64Data = await this.readAsBase64(file);
this.pdfDoc = await PDFDocument.load(base64Data);
},
async generatePdf() {
if (!this.pdfDoc) return;
const pdfBytes = await this.pdfDoc.save();
const blob = new Blob([pdfBytes], { type: 'application/pdf' });
saveAs(blob, 'generated.pdf');
},
readAsBase64(file: File): Promise<string> {
return new Promise((resolve) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => {
resolve(reader.result as string);
};
});
},
},
});
</script>
```
在这个示例中,我们通过 `input` 元素选择一个 PDF 文件,并将其转换为基于 Base64 的数据。然后,我们使用 `pdf-lib` 库加载 PDF 文档,并在用户单击“Generate PDF”按钮时将其保存到本地。我们使用 `file-saver` 库来保存生成的 PDF 文件。
请注意,这只是一个基本示例,并且需要根据您的具体需求进行修改。
阅读全文