[wkhtmltopdf] wkhtmltopdf : X 서버에 연결할 수 없습니다.

나는 wkthmltopdf 를 사용하여 내 리눅스 웹 서버에서 html을 pdf 문서로 즉석 에서 변환했습니다. 이 프로그램은 원래 X11 또는 유사한 X 서버가 올바르게 실행되어야했지만 개발자가 GUI가없는 서버에서 실행되도록 요청한 결과 정적 버전 에서 가상 X 서버를 실행한다고 확신합니다 . 나는 프로그램의 정적 (독립형) 버전을 사용하고 있으며 훌륭하게 작동합니다! 실행 파일을 폴더에 넣고 다음을 실행합니다.

./wkhtmltopdf file1.html file2.pdf

그러나이 프로그램을 시스템 전체에 설치하고 싶습니다. 나는 apt-get install wkhtmltopdf(어제 방금 설치 한)을 사용했고 64 비트 시스템에서 실행 중이므로 apt-get install ia32-libs. 설치 후 다음과 같은 버전을 찾을 수 있습니다.

wkhtmltopdf --version

산출:

Name:
  wkhtmltopdf 0.9.9

License:
  Copyright (C) 2008,2009 Wkhtmltopdf Authors.



  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
  This is free software: you are free to change and redistribute it. There is NO
  WARRANTY, to the extent permitted by law.

Authors:
  Written by Jakob Truelsen. Patches by Mário Silva, Benoit Garret and Emmanuel
  Bouthenot.

이제 aptitude를 통해 설치된 프로그램을 실행하려고하면 다음과 같은 오류가 발생합니다.

wkhtmltopdf: cannot connect to X server

누구든지 내가 이것을 고칠 수있는 방법을 알고 있습니까? 이 버전에는 가상 X 서버 또는 무언가가 누락 된 것 같습니다.



답변

또는 이것을 시도하십시오 ( http://drupal.org/node/870058에서 )

  1. wkhtmltopdf를 다운로드하십시오. 또는 패키지 관리자로 설치하는 것이 좋습니다.

    sudo apt-get install wkhtmltopdf
    
  2. 그것을 추출하고 이동 /usr/local/bin/

  3. wkhtmltopdf이제 실행 파일이 있도록 이름을 변경하십시오 ./usr/local/bin/wkhtmltopdf
  4. 권한 설정 : sudo chmod a+x /usr/local/bin/wkhtmltopdf
  5. 필요한 지원 패키지를 설치합니다.

    sudo apt-get install openssl build-essential xorg libssl-dev
    
  6. 작동하는지 확인 : 실행

    /usr/local/bin/wkhtmltopdf http://www.google.com test.pdf
    

    작동하면 완료된 것입니다. “X 서버에 연결할 수 없음”오류가 발생하면 7 번으로 계속 진행하십시오.

  7. ‘가상’x 서버에서 헤드리스로 실행해야합니다. xvfb라는 패키지로이 작업을 수행합니다.

    sudo apt-get install xvfb
    
  8. xvfb에서 wkhtmltopdf를 래핑하기 위해 약간의 쉘 스크립트를 작성해야합니다. 라는 파일 wkhtmltopdf.sh을 만들고 다음을 추가하십시오.

    xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "$@"
    
  9. 이 셸 스크립트를로 이동 /usr/local/bin하고 권한을 설정합니다.

    sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh
    
  10. 다시 작동하는지 확인 : 실행

    /usr/local/bin/wkhtmltopdf.sh http://www.google.com test.pdf
    

참고 http://www.google.com이 같은 오류가 발생 할 수 있습니다 “A는 ResourceObject가 로딩 완료 신호를받은 마쳤다. 이것은 부하에 긴에 iframe을 복용의 표시 될 수 있습니다.” 와 같은 더 간단한 페이지로 테스트 할 수 있습니다 http://www.example.com.


답변

이것은 나를 위해 문제를 해결했습니다.

sudo apt-get install xvfb
xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltopdf file1.html file2.pdf


답변

시도했지만 sudo apt-get install wkhtmltopdf성공하지 못했습니다. 대신 다음을 시도해보십시오.

  1. 최신 실행 파일 (.11 rc1) 다운로드 :

    wget https://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2

  2. 압축 해제 :

    tar -vxf wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2

  3. 이름을 바꿉니다.

    mv wkhtmltopdf-i386 wkhtmltopdf

  4. chmod를 실행 파일로 변경하십시오.

    chmod a+x wkhtmltopdf

  5. / usr / bin에 넣으십시오.

    sudo mv wkhtmltopdf /usr/bin


답변

방금 만들었습니다.

1- wkhtmltopdf 종속성 다운로드

# apt-get install wkhtmltopdf

2- 소스에서 다운로드

# wget http://downloads.sourceforge.net/project/wkhtmltopdf/xxx.deb

# dpkg -i xxx.deb

3- 시도

# wkhtmltopdf http://google.com google.pdf

잘 작동

효과가있다!


답변

가짜 X 서버없이이 문제를 해결하는 방법을 찾았습니다. 최신 버전의 wkhtmltopdf에서는 작업을 위해 X 서버가 필요하지 않지만 공식 Linux 저장소에는 없습니다.

Ubuntu 14.04.4 LTS (trusty) i386 용 솔루션

$ sudo apt-get install xfonts-75dpi
$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2/wkhtmltox-0.12.2_linux-trusty-i386.deb
$ sudo dpkg -i wkhtmltox-0.12.2_linux-trusty-i386.deb
$ wkhtmltopdf http://www.google.com test.pdf

Ubuntu 14.04.4 LTS (신뢰할 수있는) AMD64 용 솔루션

$ sudo apt-get install xfonts-75dpi
$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2/wkhtmltox-0.12.2_linux-trusty-amd64.deb
$ sudo dpkg -i wkhtmltox-0.12.2_linux-trusty-amd64.deb
$ wkhtmltopdf http://www.google.com test.pdf

사용자 felixhummel 은 매우 좋은 솔루션을 얻었지만 유틸리티가있는 저장소가 변경되었습니다.


답변

Timothy의 대답을 확장 …

웹 앱의 일부로 wkhtmltopdf를 사용하려는 웹 개발자라면 다음 /usr/bin/과 같이 폴더에 간단히 설치할 수 있습니다 .

cd /usr/bin/
curl -C - -O http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2
tar -xvjf wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2
mv wkhtmltopdf-i386 wkhtmltopdf

이제를 사용하여 어디서나 실행할 수 있습니다 wkhtmltopdf.

개인적 으로 PHP 에서 Snappy 라이브러리를 사용합니다 . 다음은 PDF 작성이 얼마나 쉬운 지에 대한 예입니다.

<?php

// Create new PDF
$pdf = new \Knp\Snappy\Pdf('wkhtmltopdf');

// Set output header
header('Content-Type: application/pdf');

// Generate PDF from HTML
echo $pdf->getOutputFromHtml('<h1>Title</h1><p>Your content goes here.</p>');


답변

SourceForge에서 최신 wkhtmltopdf 버전으로 업데이트합니다 (이 글을 쓰는 시점에서 0.12). 실행하는 데 X 서버가 필요하지 않습니다.

Ubuntu 14.04의 예 :

$ cd /tmp/
$ wget -q http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
$ dpkg -x wkhtmltox-0.12.2.1_linux-trusty-amd64.deb foo

$ echo '<p>hi</p>' | ./foo/usr/local/bin/wkhtmltopdf - /tmp/hi.pdf
Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done

$ head -n3 /tmp/hi.pdf
%PDF-1.4
1 0 obj
<<