在 MEAN-stack 项目的客户端包括 pdfmake

Including pdfmake in client side of MEAN-stack project

我有一个基于 MEAN.io 堆栈的网站,我正在尝试使用 pdfmake 在客户端生成 PDF 文件。可以用 bower 安装 pdfmake(看起来他们使用 browserify 来生成客户端版本)。

我正在努力让它工作。 pdfmake 的注入不起作用(我假设它无法找到)或 pdfmake 对象未定义(如果我不添加 pdfmake 作为依赖项)。我假设 pdfmake 需要以某种方式打包以使其可访问,但我不知道如何。

在config/assets.json我加了:

"bower_components/pdfmake/build/pdfmake.js"

在我要使用pdfmake的JS文件对应的HTML中添加:

<script src="bower_components/pdfmake/build/pdfmake.js"></script>
<script src="bower_components/pdfmake/build/vfs_fonts.js"></script>

我已经在 Github 上设置了一个基本版本。例如,如果有人能向我解释如何使 pdfmake 可用于 packages/system/public/controllers/index.js 中,我将不胜感激。

我最近遇到了类似的问题。这似乎是因为 pdfmake 还没有 "browserfiable." 经过大量故障排除后,我能够通过简单地包括两个客户端脚本 pdfmake.min.jsvfs_fonts.js 来让它工作我的构建目录中的脚本标签。而已。

尝试将两个脚本标记移出 bower_components 目录并移至您的构建目录中。确保它们在您的 bundle.js 之前,或者通常在任何脚本需要 pdfmake 之前。

我不完全理解捆绑脚本如何能够看到由这两个文件创建的全局对象,但我认为这是因为它们将 pdfMake 设置为 window 对象:

vfs_fonts.js文件是这样开头的:)

window.pdfMake = window.pdfMake || {}; window.pdfMake.vfs

由于 Browserify 将全局对象设置为 window,这种方法似乎可行。 (虽然我不完全明白为什么... see this Github issue on their repo for more explanation and the deglobalify npm package.)

Here's another relevant post我找到了。