2016-03-23 5 views
0

1) Ich analysiere einige Seiten, um Informationen zu erhalten. 2) Wie es Informationen schwer zu lösen, ich installiere es auf HTML-Seite und machen es schön mit benutzerdefinierten CSS. 3) Dann versuche ich, es in pdf zu konvertieren, um es den Kunden zur Verfügung zu stellen.Wie wandelt man dynamische HTML-Seite in Django in PDF um?

Aber alle pdf-Konvektoren fragen nach bestimmten URL, oder Datei und so weiter. Zum Beispiel:

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 

Gibt es irgendwelche Werkzeuge, die gut funktionieren können?

Antwort

0

Von PDFCrowd Python API documentation:

Sie können auch roh HTML-Code konvertieren, verwenden Sie einfach die convertHtml() Methode statt convertURI():

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

was bedeutet, dass Sie Ihren Code ändern zu Verwenden Sie die Methode convertHtml mit Ihrer gerenderten Seite (die eine HTML-Zeichenfolge ist):

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

'Httpresponse' Objekt hat kein Attribut 'kodieren' html = Html.Encode ('utf-8') scheint es für utf-8 fragen oder etwas –

+0

@SergeyBakotin Ja, Sie müssen nur den 'content' verwenden . Siehe aktualisierte Antwort. – Selcuk

Verwandte Themen