PDFKit无法在浏览器中加载图像

我正在使用PDFKit在浏览器中生成一个PDF,然后将该PDF的blob数据发送到一个新的标签供用户下载。 我真的很喜欢PDFKit …这很漂亮。

然而,当我尝试使用PDFDocument.image()函数来“绘制”一个图像文件时,我遇到了一个问题:

Uncaught TypeError: fs.readFileSync不是一个函数

我对Node非常熟悉,所以我马上认出了方法签名 – 浏览器本身没有fs ! 我对Browserify不太熟悉,而select使用PDFKit的预build版本来避免集成另一个我不熟悉的依赖项。

我唯一的猜测是,PDFKit的开发人员没有包括在浏览器中使用这个特殊function的工作后备没有Browserify – 会使用Browserify甚至让我访问fs模块(再次,从来没有使用过)? 这是我唯一的select吗? 我是否错过了获取此function所需的特定步骤?

目前,我包含以下JS文件作为我的generate_pdf.js文件的依赖关系:

  • pdfkit.js
  • blob-stream.js

有一个模块,我也需要模拟fs吗? 我没有看到logging,但是这是一个漫长的一天。

那么,有一些库(如这个或这个 ),但我强烈build议编写自己的fs.readFileSync

由于您不可能从浏览器访问客户端的文件系统,因此使用一些现有的解决scheme意味着添加抽象级别等。

所以, 可能最简单和最简单的解决scheme就是添加

 var fs = { readFileSync: (path) => { // magic } } 

为什么可能 ? 好…

  1. 如果有许多fs函数的用法,你显然想用一些库来做

  2. 同步请求。 我想你是从一些URL加载图像,所以你将不得不在执行fs.readFileSync使用同步请求,以达到预期的结果。 这不是一个大问题,但是你会在控制台中得到警告。

PS不好意思,但是很可能你会遇到更多的问题,因为在服务器端创buildpdf更为常见。 Wy不会移动到后端? ;)