2016-03-23 65 views
0

1)我解析一些页面来获取信息。 2)由于它的信息很难分离,所以我把它安装到html页面,并使其与自定义CSS美丽。 3)然后我尝试将其转换为pdf,以提供给客户。如何在django中将动态html页面转换为pdf?

但是所有pdf对流式转换器都要求特定的url或文件等。例如:

def parse(request): 
     done = csrf(request) 
     if request.POST: 
      USERNAME = request.POST.get('logins', '') 
      PASSWORD = request.POST.get('password', '') 
      dialogue_url = request.POST.get('links', '') 
      total_pages = int(request.POST.get('numbers', '')) 
      news = [] 
      news.extend(parse_one(USERNAME, PASSWORD, dialogue_url, total_pages)) 
      contex = { 
         "news" : news, 
        } 
      done.update(contex) 

     pageclan = render(request, 'marketing/parser.html', done) 

     # create an API client instance 
     client = pdfcrowd.Client(*** ***) 

     # convert a web page and store the generated PDF to a variable. That is doesn't work. Convertor doesn't support such url. 
     pdf = client.convertURI('pageclan') 

     # set HTTP response headers 
     response = HttpResponse(content_type="application/pdf") 
     response["Cache-Control"] = "max-age=0" 
     response["Accept-Ranges"] = "none" 
     response["Content-Disposition"] = "attachment; filename=jivo_log.pdf" 

     # send the generated PDF 
     response.write(pdf) 
     return response 

有什么工具可以正常工作吗?

回答

0

PDFCrowd Python API documentation

您还可以将原始的HTML代码,只需使用convertHtml()方法,而不是convertURI()

pdf = client.convertHtml("<head></head><body>My HTML Layout</body>")

,这意味着你可以修改代码以使用convertHtml方法与您的呈现页面(这是一个HTML字符串):

pdf = client.convertHtml(pageclan.content) 
+0

'的HttpResponse' 对象有没有属性 '编码' HTML =了Html.Encode( 'UTF-8'),似乎它要求UTF-8或东西 –

+0

@SergeyBakotin是的,你只需要使用'content' 。查看更新的答案。 – Selcuk