Używam pdfkit i wkhtmltopdf do generowania dokumentów PDF. Kiedy generuję pierwszy plik PDF, wszystko jest w porządku. Kiedy szybko (w ciągu 5 sekund) wygeneruję inny, otrzymam błąd [Errno 9] Bad descriptor pliku. Jeśli zamknę błąd (cofnę w przeglądarce) i ponownie go otworzę, utworzy on pdf.Python Django PDFKIT - [Errno 9] Niepoprawny deskryptor pliku
mój views.py
config = pdfkit.configuration(wkhtmltopdf='C:/wkhtmltopdf/bin/wkhtmltopdf.exe')
pdfgen = pdfkit.from_url(url, printname, configuration=config)
pdf = open(printname, 'rb')
response = HttpResponse(pdf.read())
response['Content-Type'] = 'application/pdf'
response['Content-disposition'] = 'attachment ; filename =' + filename
pdf.close()
return response
Może ważna uwaga: biegnę tę stronę na IIS8, gdy uruchomiony z wiersza poleceń (python manage.py runserver) błąd nie występuje.
Wszelkie wskazówki dotyczące sposobu radzenia sobie z tym błędem będą świetne.
Skąd pochodzi nazwa "printname"? –
Najprawdopodobniej problem polega na tym, że adres URL jest odrzucany przez serwer sieciowy podczas próby szybkiego ponownego załadowania (za pośrednictwem adresu from_url) lub problemów z dostępem do pliku lokalnego, który próbujesz utworzyć. Możesz spróbować wyeliminować tę ostatnią, pisząc bezpośrednio do zmiennej, przekazując False jako nazwę pliku wyjściowego - np. pdf = pdfkit.from_url ('http://google.com', False) –
Czy możesz wysłać dziennik serwera z przedziału czasu, gdy wystąpi błąd? (Wiem, że powiedziałeś, że nie ma tam żadnego błędu, po prostu mam pewne przeczucie i chcę zobaczyć informacje o żądaniach, aby się upewnić, że się nie mylę, zanim zaproponuję odpowiedź). – yuvi