heroku上phantomjs中的页面中断内部支持 [英] Page-break-inside support in phantomjs on heroku

查看:149
本文介绍了heroku上phantomjs中的页面中断内部支持的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



我做了一项调查,并在这个 GitHub问题页面。我已经尝试了他们两个,但不幸的是我不能使用CSS,因为我的页面结构和JavaScript不能正确分页。



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



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

7.6.0),并使用这个指南编译PhantomJS。
所以我执行了:

pre $ sudo apt-get update $ b $ 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中,但它崩溃,出现以下错误:

$ p $ / phantomjs:/usr/lib/libstdc++.so .6:未找到'GLIBCXX_3.4.15'版本(需要./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,现在它的工作完美无缺:)。


I have a NodeJS app using PhantomJS to generate PDF files. My app is deployed to Heroku and I'm using this phantom build pack. Unfortunately this build pack does not support the page-break-inside: avoid CSS property.

I did a research and found 2 hacks on this GitHub issue page. I've tried both of them, but unfortunately I can't use the CSS one, due to my page structure and the JavaScript one isn't page-breaking properly.

One of the guys in the GitHub link above mentioned that this problem is fixed if I compile from source, but I have no idea how I can compile from source on Heroku App and is it even possible. All the buildpacks I found are using the binaries.

It's really important for my app to break pages properly, but I can't find a way to get this feature working. Any suggestion/guide about how to fix my issue will be greatly appreciated!

解决方案

I've downloaded it to my machine(Debian 7.6.0) and compiled PhantomJS using this guide. So I executed:

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

And then I took the binary from /bin folder and added it to custom buildpack. I added this buildpack to heroku, but it crashed with the following error:

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

So I did on my machine

ldd bin/phantomjs

and I took all dependencies:

    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)

then I copied libstdc++.so.6 from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 and added it to my custom buildpack and now its working flawlessly :).

这篇关于heroku上phantomjs中的页面中断内部支持的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆