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

时间:2015-02-18 13:09:00

标签: javascript browserify mean-stack pdfmake

我有一个建立在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可用于package / system / public / controllers / index.js,我将非常感激。

1 个答案:

答案 0 :(得分:0)

我最近遇到了类似的问题。这似乎来自于pdfmake还没有&#34; browserfiable。&#34;经过多次故障排除后,我能够通过在构建目录中通过脚本标记简单地包含两个客户端脚本pdfmake.min.jsvfs_fonts.js来实现它。就是这样。

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

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

vfs_fonts.js文件的开头如下:)

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

由于Browserify将全局对象设置为window,因此这种方法似乎有效。 (虽然我不完全理解为什么...... see this Github issue在他们的回购中获得更多解释和the deglobalify npm包。)

Here's another relevant post我找到了。