jsPDF ReferenceError:未定义窗口

时间:2017-12-13 11:29:09

标签: javascript node.js window jspdf referenceerror

我需要在Javascript中创建PDF。我找到了npm Package" jsPDF"。我已经安装了" jsPDF"与npm install jspdf。它成功安装,但是当我执行fowolling代码时:

const jspdf = require ('jspdf');
let doc = new jspdf();

doc.setFontSize(40);
doc.text(35, 25, 'PDF with jsPDF!');

我收到一条错误,上面写着ReferenceError: window is not defined

有人知道我的代码中有什么问题或是否缺少某些导入?

4 个答案:

答案 0 :(得分:1)

在服务器端使用jsPDF时会出现问题。检查此提款请求Refactor acroform.js so that it is working in node.js and enable tests for IE 11

答案 1 :(得分:0)

要解决此问题:

npm install jspdf

在node_modules / jspdf / dist /文件夹中,您将看到一个jspdf.node.min.js文件替换为jspdf.min.js。

然后下面的代码将生成pdf。

//This is a fix for the ReferenceError: window is not defined
//
global.window = {document: {createElementNS: () => {return {}} }};
global.navigator = {};
global.btoa = () => {};

var fs = require('fs');
var jsPDF = require('jspdf');

var doc = new jsPDF();

doc.setFontSize(40);
doc.text(35, 25, 'PDF with jsPDF!');

var data = doc.output();

fs.writeFileSync('./document.pdf', data);

delete global.window;
delete global.navigator;
delete global.btoa;

答案 2 :(得分:0)

由于我合并了Server Side Rendering,最终为我工作的是创建一个环境变量,以查看我是否在浏览器中,然后使用此标志将代码包装在上面。

if(process.env.BROWSER){
    const jspdf = require ('jspdf');
    let doc = new jspdf();

    doc.setFontSize(40);
    doc.text(35, 25, 'PDF with jsPDF!');
 }

答案 3 :(得分:-2)

替换此:

const jspdf = require ('jspdf'); let doc = new jspdf();

与此:

import jsPDF from 'jspdf'; var doc = new jsPDF('p', 'pt');