Pdfkit / wkhtmltopdf - OSError:[Errno 8] Exec格式错误

时间:2016-01-11 04:58:38

标签: python django

请查看以下错误跟踪。

In [1]: import pdfkit

In [2]: pdfkit.from_string('a', 'a.pdf')
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
 in ()
----> 1 pdfkit.from_string('a', 'a.pdf')

/root/.virtualenvs/v1/lib/python2.7/site-packages/pdfkit/api.pyc in from_string(input, output_path, options, toc, cover, css, configuration)
     66                configuration=configuration)
     67 
---> 68     return r.to_pdf(output_path)
     69 
     70 

/root/.virtualenvs/v1/lib/python2.7/site-packages/pdfkit/pdfkit.pyc in to_pdf(self, path)
     91 
     92         result = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
---> 93                                   stderr=subprocess.PIPE)
     94 
     95         # If the source is a string then we will pipe it into wkhtmltopdf.

/usr/lib/python2.7/subprocess.pyc in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags)
    708                                 p2cread, p2cwrite,
    709                                 c2pread, c2pwrite,
--> 710                                 errread, errwrite)
    711         except Exception:
    712             # Preserve original exception in case os.close raises.

/usr/lib/python2.7/subprocess.pyc in _execute_child(self, args, executable, preexec_fn, close_fds, cwd, env, universal_newlines, startupinfo, creationflags, shell, to_close, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite)
   1325                         raise
   1326                 child_exception = pickle.loads(data)
-> 1327                 raise child_exception
   1328 
   1329 

OSError: [Errno 8] Exec format error

不确定这是一个问题还是来自我方的一些错误,它在我的本地系统中工作(长期安装)但不在数字海洋服务器中工作。两者都是Ubuntu 14。

我按照此页面的说明进行操作 - http://fedir.github.io/web/blog/2013/09/25/install-wkhtmltopdf-on-ubuntu/

请注意,我能够使用终端命令生成pdfs但不使用pdfkit。

如果我错过了什么,请告诉我。

更新 - 此link的解决方案对我有用。

1 个答案:

答案 0 :(得分:0)

作为@ user1305989的评论,以下是解决方案,

步骤:

  1. 首先安装xvfb服务器:

    sudo apt-get install xvfb
    
  2. http://wkhtmltopdf.org/downloads.html获取所需版本的wkhtmltopdf。

    对于Ubuntu 14.04 64位:

    wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
    
  3. 安装wkhtmltopdf:

    sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
    

    安装依赖项(如果需要):

    sudo apt-get -f install
    
  4. /usr/local/bin/中创建符号链接:

    echo 'exec xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "$@"' | sudo tee /usr/local/bin/wkhtmltopdf.sh >/dev/null
    sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh