2

我有一个建立在 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,我将不胜感激。

4

1 回答 1

0

我最近有一个类似的问题。这似乎是因为 pdfmake 还不是“可浏览的”。经过多次故障排除后,我能够通过在我的构建目录中包含两个客户端脚本pdfmake.min.js和脚本标签来使其正常工作。vfs_fonts.js就是这样。

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

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

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

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

由于 Browserify 将全局对象设置为window,因此这种方法似乎有效。(虽然我不完全理解为什么......在他们的 repo 上查看这个 Github 问题以获得更多解释和deglobalify npm 包。)

这是我能找到的另一个相关帖子。

于 2015-03-25T03:55:33.070 回答