2011-12-09 4 views
2

나는 파이썬에서의 pdf 생성에 기초하여 많은 질문을하지만 피사 (pisa) 나 xhtml2pdf로 pdfs를 만들지는 못했다.Pisa/xhtml2pdf로 파이썬에서 PDF 파일 만들기

여기 내 코드입니다.

pisa.pisaDocument(cStringIO.StringIO(a).encode('utf-8'),file('mypdf.pdf','wb')) 

나는 몇 가지 자습서 및 예제하지만 난 항상 노력 PDF에 발생 한 모든 단일 건 이상이 조립 후

pisa.startViewer('mypdf.pdf') 

이 손상 및하려고 할 때 나는이 메시지를 받게되고 PDF를여십시오.

"지원되는 파일 형식이 아니거나 파일이 손상 되었기 때문에 (예 : 이메일 첨부 파일로 보내졌으며 제대로 디코딩되지 않았기 때문에) Adobe Reader에서 'awesomer.pdf'를 열 수 없습니다. "

이 메시지는 문자열에 .encode ('utf-8')를 사용하지 않아도 발생합니다.

내가 뭘 잘못하고 있니? Mac에서 인코딩이이 작업과 관련이 있습니까?

pdf = pisa.pisaDocument(cStringIO.StringIO(a).encode('utf-8'),file('mypdf.pdf','wb')) 
if pdf.err: 
    print "*** %d ERRORS OCCURED" % pdf.err 

을 그리고 오류 출력이 무엇을 참조하십시오

답변

1

나는 다음을 수행하는 것이 좋습니다.

나는 당신이 인코딩하는 어떤 문자열 모르겠지만이 또한 도움이 될 수 있습니다 : a 필요가 HTML

+0

을 이상하게, 당신은 잘못된 것입니다 상상 않는 내가, os.system을가 ("xhtml2pdf % s을"% (파일 이름))'는 파이썬에서 시도 명령 줄에서 작업이 아닌 것 '을 시도하는 경우 여기 엔 인코딩이 있나요? – dalanmiller

5
내가 수동으로 파일을 닫는 게 좋을 것

을 인코딩 할 경우

pdf = pisa.pisaDocument(cStringIO.StringIO(html.encode(a)).encode('utf-8'),file('mypdf.pdf','wb')) 

그것은에 따라, 비슷한 문제가 있었다. 이 시도 :

f = file('mypdf.pdf', 'wb') 
pisa.pisaDocument(cStringIO.StringIO(a).encode('utf-8'),f) 
f.close() 
+0

close() 파일이 중요하기 때문에 더 좋은 접근 방식 – panchicore

+0

그리고 그 때문에'with '를 사용하는 것은 굉장합니다;) – minder