-
Notifications
You must be signed in to change notification settings - Fork 0
/
chrome.py
46 lines (35 loc) · 1.22 KB
/
chrome.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/env python
from subprocess import Popen
from subprocess import PIPE
class ChromeHtmlToPdf():
def __init__(self, url, output_path=None, verbose=False):
'''
Initialize class with google chrome parameters
Params:
Return:
'''
# Base command
self.command = 'google-chrome --headless --disable-gpu'
# Set output path
self.command += ' --print-to-pdf'
if output_path:
self.command += '=' + output_path
# Set url
self.command += ' ' + url
if verbose:
print self.command
def render(self):
''' Actually render html to pdf '''
try:
p = Popen(self.command, shell=True, stdout=PIPE, stderr=PIPE, close_fds=True)
stdout, stderr = p.communicate()
retcode = p.returncode
if retcode == 0:
# call was successful
return
elif retcode < 0:
raise Exception("Terminated by signal: ", -retcode)
else:
raise Exception(stderr)
except OSError, exc:
raise exc