Skip to content

Commit 69e6d4b

Browse files
committed
move error checking to generate_pdf
1 parent cded10e commit 69e6d4b

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

pydf/wkhtmltopdf.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,7 @@ def execute_wk(*args):
2323
wk_args = (wkhtmltopdf_cmd,) + args
2424
p = subprocess.Popen(wk_args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
2525
stdout, stderr = p.communicate()
26-
# it seems wkhtmltopdf's error codes can be false, we'll ignore them if we
27-
# seem to have generated a pdf
28-
if p.returncode != 0 and stdout[:4] != '%PDF':
29-
raise IOError('error running wkhtmltopdf, command: %r\nresponse: "%s"' % \
30-
(wk_args, stderr.strip(' \n')))
31-
return stdout, stderr
26+
return stdout, stderr, p.returncode
3227

3328

3429
def generate_pdf(source,
@@ -95,20 +90,27 @@ def generate_pdf(source,
9590
else:
9691
cmd_args.extend([arg_name, str(value)])
9792

98-
def gen(src):
93+
def gen_pdf(src, cmd_args):
9994
with NamedTemporaryFile(suffix='.pdf', mode='rwb+') as pdf_file:
100-
execute_wk(*(cmd_args + [src, pdf_file.name]))
95+
cmd_args += [src, pdf_file.name]
96+
_, stderr, returncode = execute_wk(*cmd_args)
10197
pdf_file.seek(0)
102-
return pdf_file.read()
98+
pdf_string = pdf_file.read()
99+
# it seems wkhtmltopdf's error codes can be false, we'll ignore them if we
100+
# seem to have generated a pdf
101+
if returncode != 0 and pdf_string[:4] != '%PDF':
102+
raise IOError('error running wkhtmltopdf, command: %r\nresponse: "%s"' % \
103+
(cmd_args, stderr.strip(' \n')))
104+
return pdf_string
103105

104106
if is_url:
105-
return gen(source)
107+
return gen_pdf(source, cmd_args)
106108

107109
with NamedTemporaryFile(suffix='.html', mode='w') as html_file:
108110
html_file.write(source.encode('utf-8'))
109111
html_file.flush()
110112
html_file.seek(0)
111-
return gen(html_file.name)
113+
return gen_pdf(html_file.name, cmd_args)
112114

113115

114116
def get_version():

0 commit comments

Comments
 (0)