Skip to content

Commit cded10e

Browse files
committed
make errors a bit more lenient
1 parent 4c4c9cc commit cded10e

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

pydf/wkhtmltopdf.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,11 @@ 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-
if p.returncode != 0:
27-
raise IOError('error running wkhtmltopdf: "%s"' % stderr)
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')))
2831
return stdout, stderr
2932

3033

@@ -94,8 +97,7 @@ def generate_pdf(source,
9497

9598
def gen(src):
9699
with NamedTemporaryFile(suffix='.pdf', mode='rwb+') as pdf_file:
97-
cmd_args.extend([src, pdf_file.name])
98-
execute_wk(*cmd_args)
100+
execute_wk(*(cmd_args + [src, pdf_file.name]))
99101
pdf_file.seek(0)
100102
return pdf_file.read()
101103

tests/runtests.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,14 @@ def test_no_arguments(self):
6969
else:
7070
raise AssertionError('Should have raised a TypeError')
7171

72+
def test_no_arguments(self):
73+
try:
74+
generate_pdf('www.')
75+
except IOError:
76+
pass
77+
else:
78+
raise AssertionError('Should have raised a IOError')
79+
7280
def test_get_version(self):
7381
print get_version()
7482

0 commit comments

Comments
 (0)