我需要在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
。
有人知道我的代码中有什么问题或是否缺少某些导入?
答案 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');