2017-09-27 6 views
0

Ich habe ein Problem, wenn ich versuche, pdf-Datei, die russische Wörter in den Dateinamen enthalten, zu downloaden. Ich benutze pdfkit tool.Wie fügt man nicht-ASCII-Zeichen in den Dateinamen ein?

def get_pdf_document(request, code): 
    host = request.scheme + "://" + request.META["HTTP_HOST"] 
    uri = reverse('documents:view_signed_document', 
       kwargs={'code': code}) + "?is_pdf=true" 
    obj = get_object_or_404(DownloadCode, code=code) 
    options = { 
     'page-size': 'A4', 
     'encoding': "UTF-8", 
     'no-outline': None, 
     'margin-bottom': '17', 
     'margin-left': '10', 
     'margin-right': '10', 
     'margin-top': '10', 
     'footer-html': host + reverse('api:pdf-footer', kwargs={'code': code}), 
    } 
    if obj.doc_type == ACTS_TYPE or obj.doc_type == LISTS_TYPE: 
     options['orientation'] = 'Landscape' 
    result = pdfkit.from_url(host + uri, False, options=options) 
    response = HttpResponse(result, content_type='application/pdf') 
    response[ 
     'Content-Disposition'] = 'attachment; filename=\"{}-{}.pdf\"'.format(GET_DOC_TYPE[obj.doc_type], code) 
    response['Content-Length'] = response.tell() 
    return response 

und ich habe diese konstanten Variablen:

PDF_INVOICE = u"СЧЕТ-ФАКТУРА" 
PDF_ACT = u"АКТ" 
PDF_LIST = u"НАКЛАДНАЯ" 
PDF_PAYMENT = u"СЧЕТ НА ОПЛАТУ" 
PDF_RECON = u"АКТ СВЕРКИ" 
PDF_COMMON = u"НЕФОРМАЛИЗОВАННЫЙ" 


GET_DOC_TYPE = { 
    INVOICE_TYPE: PDF_INVOICE, 
    ACTS_TYPE: PDF_ACT, 
    LISTS_TYPE: PDF_LIST, 
    PAYMENTS_TYPE: PDF_PAYMENT, 
    RECONS_TYPE: PDF_RECON, 
    COMMONS_TYPE: PDF_COMMON, 
} 

und meine Fehlermeldung:

'ascii' codec can't encode characters in position 0-2: ordinal not in range(128) 

und ich weiß nicht, wie dieses Problem zu lösen. pls help

Antwort

0

Encode die konstanten Variablen utf-8 Format

PDF_INVOICE = (u"СЧЕТ-ФАКТУРА").encode('utf-8') 
+0

u danken, es ist wirklich funktionieren, aber ich fügte auch # - * - Programmierung: utf-8 - * - am Anfang der Datei, und warum es nicht funktioniert –

+0

probiere '# - * - coding: utf-8 - * -' statt '# - coding: utf-8 --' –

Verwandte Themen