2014-09-10 5 views
2

PhantomJS를 사용하여 PDF 파일을 생성하는 NodeJS 앱이 있습니다. 내 응용 프로그램은 Heroku에 배포되고 난 this 팬텀 빌드 팩을 사용하고 있습니다. 아쉽게도이 빌드 팩은 page-break-inside: avoid CSS 속성을 지원하지 않습니다.heroku의 phantomjs에서 페이지 나누기 내부 지원

나는 연구를 수행하여 this GitHub 문제 페이지에서 2 회의 해킹을 발견했습니다. 둘 다 시도했지만 불행히도 내 페이지 구조와 자바 스크립트 중 하나가 페이지를 올바르게 구분하지 못하기 때문에 CSS 하나를 사용할 수 없습니다.

위의 GitHub 링크에있는 사람들 중 한 명은 소스에서 컴파일 할 때이 문제가 해결되었다고 언급했으나 Heroku App의 소스에서 어떻게 컴파일 할 수 있는지 전혀 알지 못합니다. 내가 찾은 모든 빌드 팩은 바이너리를 사용하고 있습니다.

내 앱이 페이지를 적절하게 나누는 것이 매우 중요하지만이 기능을 작동시키는 방법을 찾을 수 없습니다. 내 문제를 해결하는 방법에 대한 제안/가이드는 크게 감사하겠습니다!

답변

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에 추가 : 그래서 실행. 나는 Heroku가이 buildpack을 추가하지만, 다음과 같은 오류와 충돌 :

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

그래서 내가 내 컴퓨터

ldd bin/phantomjs 

에했고, 나는 모든 종속성에 나섭니다 : 다음

[email protected]:/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) 

를 I libstdc++.so.6/usr/lib/x86_64-linux-gnu/libstdc++.so.6에서 가져 와서 내 사용자 지정 빌드 팩에 추가하고 지금은 완벽하게 작동합니다. :)