2013-10-18 5 views
1

django 응용 프로그램에서 형식이 지정된 pdf 파일을 생성하는 데 rst2pdf를 사용하고 있습니다. 어떤 이유Django 응용 프로그램에서 하위 프로세스를 통해 rst2pdf를 호출하면 파일이 잘립니다.

temp_file = tempfile.NamedTemporaryFile(mode='w+t', dir=PDF_PATH, delete=False) 
temp_pdf = tempfile.NamedTemporaryFile(dir=PDF_PATH, delete=False) 
temp_file.write(plaintext) 

subprocess.call('rst2pdf ' + temp_file.name +' -s '+ STYLESHEET_PATH +' -o ' + temp_pdf.name, shell=True) 
pdf = open(temp_pdf.name, 'rb') 

response = HttpResponse(pdf.read(), mimetype='application/force-download') 
response['Content-Disposition'] = 'attachment; filename=output.pdf' 
response['Content-Length'] = os.stat(temp_pdf.name).st_size 


return response 

, 응답이 마지막 페이지에서 잘립니다 역할을 가져옵니다 PDF : 이것은 내가이 일을 사용하고 코드입니다. 파일 시스템의 pdf가 잘립니다. 나는 pdf에 쓰여지고있는 평문을 볼 수있다. 나는 심지어 같은 rst2pdf 호출을 명령 행에서 모두 같은 인수로 실행했고, pdf는 잘 생성되었다. 하지만 몇 가지 이유로, 내 Django 응용 프로그램 내부에서 rst2pdf를 호출하면 파일이 잘립니다. 이 문제를 일으킬 수있는 아이디어 또는 하위 프로세스 호출을 디버깅하는 방법에 대한 아이디어가 있습니까?

답변

0

파이썬이 쓰기 가능한 파일을 처리하는 방법을 완전히 이해하지 못했던 것 같습니다. 분명히 temp_file.write를 호출 한 후 temp_file.close() 또는 temp_file.flush()를 호출하지 않으면 버퍼에 데이터가 기록되지 않습니다.