Hi Alessio

If you call from Apache then you can call subprocess directly  from 
webserver but in nginx you have to use schedule task. Better to run 
wkhtmltopdf via schedule task in case of generate pdf or process a report.

THIS IS MY CODE:

def schedule_task__pdf_render():    
    # import
    import os, re
    from subprocess import call
    
    body_html_path   = os.path.join(request.folder, "static", 
"template/paper__body.html")
    header_html_path = os.path.join(request.folder, "static", 
"template/paper__header.html")
    footer_html_path = os.path.join(request.folder, "static", 
"template/paper__footer.html")
    result_pdf_path  = os.path.join(request.folder, "static", 
"template/%s.pdf" %print_job__id)


    # body
    html = response.render('controller_name/my_html_page.html')
    file(body_html_path, "wb").write(html)

    # header
    html = response.render('controller_print_template/my_page_header.html') 
   
    file(header_html_path, "wb").write(html)
    
    # footer
    html = response.render('controller_print_template/my_page_footer.html')
    file(footer_html_path, "wb").write(html)    

    call('wkhtmltopdf --javascript-delay 10000 --margin-top 30mm 
--margin-left 20 --margin-right 20 --margin-bottom 30mm  %s --header-html 
%s --footer-html %s  %s' %(body_html_path, 
header_html_path,footer_html_path, result_pdf_path), shell=True)
        
    return


NOTE  : 
1. Use --javascript-delay 10000 in case of waiting for javascript complete 
their work, ie. waiting mathjax to complete math formula conversion to html 
page.
2. This case I render html from file, not render direct from online html 
page because my html page is not a static page.
3. Sample of my_html_page.html 

{{
    paper__id           = request.vars.paper__id
    paper__row          = db.paper[paper__id]
}}

<div>
    <div class='title-in-english'>
        {{=XML(paper__row.title_in_english)}}
    </div>
    <div class='authours-in-english'>
        {{=XML(paper__row.authours_in_english)}}
    </div>
    <div class='content-body'>
       {{=XML(i.paper_content_body)}}
    </div>
</div>

Hope it help.

:)


เมื่อ วันอาทิตย์ที่ 19 กรกฎาคม ค.ศ. 2015 22 นาฬิกา 10 นาที 19 วินาที UTC+7, 
Alessio Varalta เขียนว่า:
>
> Hi I am going to use wkhtmltopdf in a web2py application for generate pdf 
> file. I see only another topic about wkhtmltopdf in this forum and I 
> understand that i have to use calls service but I the line of command is 
> for me incorrect.There is a example online with the call for use 
> wkhtmltopdf with this framework? If I can use call service you can give me 
> how can i write the line of calls or in another case you can give a me a 
> example for use wkhtmltopdf?
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to