2014-11-22 3 views
0

Я пытаюсь дать pypdf некоторые PDF-файлы для слияния и он выдает ошибку coercing to Unicode. Мой кодошибка слияния pyPDF2 в Unicode

from PyPDF2 import PdfFileMerger, PdfFileReader 

import pdfcrowd 
from django.http import HttpResponse 

def generate_pdf(request): 
    list_of_pages = ["http://127.0.0.1:8000/page"+x+"/" for x in list("1234567")] 
    pdfs = ["page"+x+".pdf" for x in list("1234567")] 
    merger = PdfFileMerger() 
    client = pdfcrowd.Client("username", "password") 

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

    for num in list("1234567"): 
     html = "http://wilderness.maasaimara.com/page{0}/".format(num) 
     pdf = "page{0}.pdf".format(num) 
     pdf_file = client.convertURI(html) 
     local = open(pdf,'w') 
     local.write(pdf_file) 
     local.close() 
     merger.append(PdfFileReader(file(local, 'rb'))) 


    merger.write("document-output.pdf") 
    response.write(merger) 
    return response 

Я получаю следующее сообщение об ошибке в Django

TypeError at /generate/ 

coercing to Unicode: need string or buffer, file found 

Request Method:  GET 
Request URL: http://wilderness.maasaimara.com/generate/ 
Django Version:  1.5.11 
Exception Type:  TypeError 
Exception Value:  

coercing to Unicode: need string or buffer, file found 

Exception Location:  /home/africa/webapps/wilderness/wilderness/wilderness/views.py in generate_pdf, line 25 
Python Executable: /usr/local/bin/python 
Python Version:  2.7.8 
Python Path:  

    ['/home/africa/webapps/wilderness', 
    '/home/africa/webapps/wilderness/wilderness', 
    '/home/africa/webapps/wilderness/lib/python2.7', 
    '/home/africa/lib/python2.7/pip-1.2.1-py2.7.egg', 
    '/home/africa/lib/python2.7', 
    '/home/africa/lib/python2.7/site-packages', 
    '/usr/local/lib/python27.zip', 
    '/usr/local/lib/python2.7', 
    '/usr/local/lib/python2.7/plat-linux2', 
    '/usr/local/lib/python2.7/lib-tk', 
    '/usr/local/lib/python2.7/lib-old', 
    '/usr/local/lib/python2.7/lib-dynload', 
    '/home/africa/.local/lib/python2.7/site-packages', 
    '/usr/local/lib/python2.7/site-packages', 
    '/usr/local/lib/python2.7/site-packages/PIL'] 

    Server time:  Sat, 22 Nov 2014 16:29:02 +0000 

ответ

1

Насколько я могу видеть,

merger.append(PdfFileReader(file(local, 'rb')))

должен быть

merger.append(PdfFileReader(open(pdf, 'rb'))

как local - это дескриптор файла, который уже был закрыт. Но вы действительно хотите открыть только что написанный локальный файл, имя которого хранится в pdf.

Однако, я еще не пытался.