2011-12-09 4 views
2

Pythonでのpdf作成に基づいて多くの質問がありますが、Pisaまたはxhtml2pdfを使用してpdfsを作成したことはありません。Pisa/xhtml2pdfを使ってPythonでpdfsを作成する

ここに私のコードです。

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

、その後

pisa.startViewer('mypdf.pdf') 

私はカップル異なるチュートリアルと例の上にこれを組み立てたが、私が試した一つ一つの事は常に破壊される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は」%(ファイル名))しようとした場合、'それがコマンドラインから動作しますが、Pythonの自体からしようとしていない、何を想像しないことは間違っているだろうここではエンコーディング? – 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

関連する問題