【问题标题】:Page-break-inside support in phantomjs on herokuheroku 上 phantomjs 中的分页支持
【发布时间】:2014-09-10 01:48:29
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    我已经将它下载到我的机器(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 添加到 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)
    

    然后我从/usr/lib/x86_64-linux-gnu/libstdc++.so.6 复制libstdc++.so.6 并将其添加到我的自定义构建包中,现在它可以完美运行:)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多