diff --git a/wkhtmltopdf/tests/run.py b/wkhtmltopdf/tests/run.py
index 4ff7f9e..2a6cda5 100644
--- a/wkhtmltopdf/tests/run.py
+++ b/wkhtmltopdf/tests/run.py
@@ -30,7 +30,7 @@
MEDIA_URL='/media/',
STATIC_ROOT=os.path.join(DIRNAME, 'static'),
STATIC_URL='/static/',
- TEMPLATES = [ # For Django >= 1.10. Ignored in lower versions
+ TEMPLATES=[ # For Django >= 1.10. Ignored in lower versions
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'APP_DIRS': True,
diff --git a/wkhtmltopdf/tests/templates/footer.html b/wkhtmltopdf/tests/templates/footer.html
index 9deaf30..18ac4f5 100644
--- a/wkhtmltopdf/tests/templates/footer.html
+++ b/wkhtmltopdf/tests/templates/footer.html
@@ -1,4 +1,5 @@
{% load static %}
-
-
+
+
+
diff --git a/wkhtmltopdf/utils.py b/wkhtmltopdf/utils.py
index d81131b..6fec0de 100644
--- a/wkhtmltopdf/utils.py
+++ b/wkhtmltopdf/utils.py
@@ -19,6 +19,7 @@
import django
from django.conf import settings
+from django.contrib.staticfiles import finders
from django.template import loader
from django.template.context import Context, RequestContext
from django.utils import six
@@ -141,6 +142,7 @@ def wkhtmltopdf(pages, output=None, **kwargs):
return check_output(ck_args, **ck_kwargs)
+
def convert_to_pdf(filename, header_filename=None, footer_filename=None, cmd_options=None):
# Clobber header_html and footer_html only if filenames are
# provided. These keys may be in self.cmd_options as hardcoded
@@ -155,6 +157,7 @@ def convert_to_pdf(filename, header_filename=None, footer_filename=None, cmd_opt
cmd_options['footer_html'] = footer_filename
return wkhtmltopdf(pages=filename, **cmd_options)
+
class RenderedFile(object):
"""
Create a temporary file resource of the rendered template with context.
@@ -180,6 +183,7 @@ def __del__(self):
if self.temporary_file is not None:
self.temporary_file.close()
+
def render_pdf_from_template(input_template, header_template, footer_template, context, request=None, cmd_options=None):
# For basic usage. Performs all the actions necessary to create a single
# page PDF from a single template and context.
@@ -217,6 +221,7 @@ def render_pdf_from_template(input_template, header_template, footer_template, c
footer_filename=footer_filename,
cmd_options=cmd_options)
+
def content_disposition_filename(filename):
"""
Sanitize a file name to be used in the Content-Disposition HTTP
@@ -260,34 +265,30 @@ def make_absolute_paths(content):
"""Convert all MEDIA files into a file://URL paths in order to
correctly get it displayed in PDFs."""
overrides = [
- {
- 'root': settings.MEDIA_ROOT,
- 'url': settings.MEDIA_URL,
- },
- {
- 'root': settings.STATIC_ROOT,
- 'url': settings.STATIC_URL,
- }
+ settings.MEDIA_URL,
+ settings.STATIC_URL,
]
+
has_scheme = re.compile(r'^[^:/]+://')
for x in overrides:
- if not x['url'] or has_scheme.match(x['url']):
+ if has_scheme.match(x):
continue
- if not x['root'].endswith('/'):
- x['root'] += '/'
-
occur_pattern = '''["|']({0}.*?)["|']'''
- occurences = re.findall(occur_pattern.format(x['url']), content)
+ occurences = re.findall(occur_pattern.format(x), content)
occurences = list(set(occurences)) # Remove dups
+
for occur in occurences:
- content = content.replace(occur,
- pathname2fileurl(x['root']) +
- occur[len(x['url']):])
+ filename = occur[len(x):]
+ pathname = finders.find(filename, all=False)
+
+ if pathname:
+ content = content.replace(occur, pathname2fileurl(pathname))
return content
+
def render_to_temporary_file(template, context, request=None, mode='w+b',
bufsize=-1, suffix='.html', prefix='tmp',
dir=None, delete=True):