html2pdf.js 在没有toBlob方法的情况如何转成blob格式
时间: 2024-10-15 13:15:30 浏览: 20
通过JavaScript将html网页转换成pdf【完整代码】.md
`html2pdf.js` 默认情况下生成的是一个 PDF 数据流,如果你需要将其转换为 Blob 对象以便于浏览器保存或上传,但在某些旧版浏览器中可能不支持 `toBlob` 方法,这时你可以使用 `FileReader` API 来实现。以下是基本步骤:
1. 首先,使用 `outputPdf` 方法获取到 PDF 数据流。
```javascript
const pdfData = await html2pdf().outputPdf(htmlString);
```
2. 创建一个新的 `FileReader` 实例,并指定其 readAsArrayBuffer 方法来读取 PDF 数据。
```javascript
const reader = new FileReader();
reader.onload = function (event) {
const arrayBuffer = event.target.result;
// 现在arrayBuffer包含了PDF的内容
// 将ArrayBuffer转换为Blob
convertArrayBufferToBlob(arrayBuffer, 'application/pdf', function(blob) {
// blob现在就是PDF的Blob格式,可以用于后续操作如下载或上传
});
};
reader.readAsArrayBuffer(pdfData);
```
3. `convertArrayBufferToBlob` 函数是个辅助函数,用于创建 Blob。如果不存在,你可以在项目中自行编写或者引入第三方库实现。
```javascript
function convertArrayBufferToBlob(arrayBuffer, contentType, callback) {
var binaryString = '';
var byteView = new Uint8Array(arrayBuffer);
for (var i = 0; i < byteView.byteLength; i++) {
binaryString += String.fromCharCode(byteView[i]);
}
var blob = new Blob([binaryString], {type: contentType});
callback(blob);
}
```
阅读全文