2016-12-22 6 views
0

私はPythonスクリプト(3.5)を入手しました。ユーザは、N個の可能性のあるテストが不足したテストを選択します。したがって、ユーザーは1回のテストをN回まで実行できます。Pythonから文書(好ましくはPDF)を出力します

今のところ、テストの結果をmatplotlibのプロットに出力するだけですが、それは正常に見えますが、個々のファイルとして保存されます。また、コードには各テストのためのPASS/FAIL基準があります。

だから問題は、テストシーケンスの全話をPDFとして出力するためにPythonでいくつかのツールを使いたいと思います。私は、例えば....途中でいくつかのボイラープレートのものを維持し、いくつかのものを更新できるようにしたいと思います:

Test was run for 7 minutes. Maximum power was recorded as -69.5dBm. Graph 毎回同じである事がある:

Test was run for minutes. Maximum power was recorded as dBm.

そして、テストの結果から最大電力の分と数が引き出されます。また、グラフは「matplotlib」から取り込まれます。

したがって、各テストで、ボイラープレートのテキストを追加し、実際のデータをいくつかの空白を埋め込み、必要に応じて画像をスワップして、Pythonでやりたいと思います。

私はSOのいくつかの提案を見ましたが、ほとんどの場合、ソリューションが追加または透かし入れ用のように見えます既存の PDF。また、GoogleはPythonコードドキュメントの生成を自動化するために多くの結果を得ています。Pythonでドキュメントを生成するためのコードではありません。

Reportlabは有望に見えましたが、放棄されたようです。

また、私は出力がPDFであるという要件に結婚していません。これは内部使用のみのため、柔軟性があります。後でユーザーが手動でPDFに変換できるHTML、Word、その他のものも大丈夫です。私はPDFがバイナリな性質のためにやや面倒かもしれないことを知っています。

+0

あなたはピラテックスを使用できます – kiliantics

+0

オハイオ州......そうです。ありがとう! – testname123

+0

Matplotlibには複数ページのpdfバックエンドがあります。 matplotlibを使用して、ボイラープレートのものを個々の人物に追加し、すべてをmultipage pdfに参加させることができます。例えば、 [pylab_examples](http://matplotlib.org/examples/pylab_examples/multipage_pdf.html)。もう1つのオプションは[reportlab](http://www.reportlab.com/opensource/)です。 – Jakob

答えて

1

これをmatplotlibで直接行うことができます。 複数の図を作成し、後でmatplotlib.backends.backend_pdf.PdfPagesを使用してすべて同じPDF文書に保存できます。
text()コマンドを使用してテキストを設定できます。

これはどのように動作するかに関する基本的な例です。

import matplotlib.pyplot as plt 
from matplotlib.backends.backend_pdf import PdfPages 
import numpy as np 

N=10 
text = "The maximum is {}, the minimum is {}" 

# create N figures 
for i in range(N): 
    data = np.random.rand(28) 
    fig = plt.figure(i+1) 
    ax= fig.add_subplot(111) 
    ax.plot(np.arange(28), data) 
    # add some text to the figure 
    ax.text(0.1, 1.05,text.format(data.max(),data.min()), transform=ax.transAxes) 

# Saving all figures to the same pdf 
pp = PdfPages('multipage.pdf') 
for i in range(N): 
    fig = plt.figure(i+1) 
    fig.savefig(pp, format='pdf') 
pp.close() 
関連する問題