Conversion:
html = template.render(context)
resultFile = open(filepath, "w+b")
pdf = pisa.CreatePDF(html.encode('utf-8'), dest=resultFile,encoding='utf-8', link_callback=link_callback)
link_callback
def link_callback(uri, rel):
sUrl = settings.STATIC_URL # Typically /static/
sRoot = settings.STATIC_ROOT
mUrl = settings.MEDIA_URL # Typically /static/media/
mRoot = settings.MEDIA_ROOT # Typically /home/userX/project_static/media/
# convert URIs to absolute system paths
if uri.startswith(mUrl):
path = os.path.join(mRoot, uri.replace(mUrl, ""))
elif uri.startswith(sUrl):
path = os.path.join(sRoot, uri.replace(sUrl, ""))
else:
return uri # handle absolute uri (ie: http://some.tld/foo.png)
# make sure that file exists
if not os.path.isfile(path):
raise Exception(
'media URI must start with %s or %s' % (sUrl, mUrl)
)
return path
I have created pdf using xhtml2pdf. The file is created but css is not at all applied to it. I have checked the path which is returned from link_callback, its correct but in pdf there is no css applied at all.
css:
#page_1 {position:relative; overflow: hidden;margin: 64px 0px 65px 0px;padding: 0px;border: none;}
#page_1 #p1dimg1 {position:absolute;top:0px;left:20%;z-index:-1;width:600px;height:870px;}
#page_1 #p1dimg1 #p1img1 {width:600px;height:870px;}
#page_2 {position:relative; overflow: hidden;padding-left: 100px;border: none;height: 854px;}
#page_2 #p2dimg1 {position:absolute;left:27%;z-index:-1;width:490px;height:669px;}
#page_2 #p2dimg1 #p2img1 {width:490px;height:669px;}
css path which i got: /Users/mypc/project/project/static/css/lender_borrower.css
xhtml2pdf doesn't allow linking to external stylesheets.
You will need to provide an internal style sheet - which means writing your styles in the head of the HTML template, between tags
<style type="text/css">HERE</style>
However, note that many CSS styles are not supported. See the docs for what CSS is supported.
Sample template below:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Whatever</title>
<style type="text/css">
# PLACE ALL YOUR CSS STYLING HERE
</style>
</head>
<body>
# content goes here
</body>
</html>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With