heroku上的phantomjs中的Page-break-inside支持

时间:2014-09-10 01:48:30

标签: node.js heroku phantomjs buildpack page-break-inside

我有一个使用PhantomJS生成PDF文件的NodeJS应用程序。我的应用程序已部署到Heroku,我正在使用this幻像构建包。不幸的是,这个构建包不支持page-break-inside: avoid CSS属性。

我做了一项研究,在this GitHub问题页面上发现了2个黑客攻击。我已经尝试了它们两个,但不幸的是我不能使用CSS,因为我的页面结构和JavaScript没有正确的分页。

上面GitHub链接中的一个人提到如果我从源代码编译,这个问题是修复的,但我不知道如何从Heroku App上的源代码编译,甚至可能。我发现的所有构建包都使用二进制文件。

我的应用程序正确打破页面非常重要,但我找不到让这个功能正常工作的方法。任何有关如何解决我的问题的建议/指南将不胜感激!

1 个答案:

答案 0 :(得分:3)

我已经将它下载到我的机器(Debian 7.6.0)并使用this指南编译了PhantomJS。 所以我执行了:

sudo apt-get update
sudo apt-get install build-essential chrpath git-core libssl-dev libfontconfig1-dev libxft-dev
git clone git://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 1.9
./build.sh

然后我从/bin文件夹中取出二进制文件并将其添加到自定义buildpack中。我将此buildpack添加到heroku,但它崩溃了以下错误:

/phantomjs: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./phantomjs)

所以我在我的机器上做了

ldd bin/phantomjs

我接受了所有依赖项:

    root@deepsypotato:/home/viktor# ldd phantomjs.1
    linux-vdso.so.1 =>  (0x00007fffe9f74000)
    libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fd914fcd000)
    libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007fd914d96000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fd914b91000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fd914989000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd91476d000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd914465000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd9141e3000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd913fcd000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd913c41000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fd915283000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fd913a2a000)
    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fd913800000)

然后我从libstdc++.so.6复制/usr/lib/x86_64-linux-gnu/libstdc++.so.6并将其添加到我的自定义buildpack中,现在它的工作完美无缺:)。