我有一个Python脚本(3.5)将通过一系列测试。用户可以选择哪些测试用完了N个可能的测试。因此,用户可以运行1次测试直至N次测试。
现在,我只是将测试结果输出到from subprocess import call
import webbrowser
call(["python", "-m", "SimpleHTTPServer"]) #This creates a server at port:8000
webbrowser.open_new_tab("some/url")
的情节,看起来不错,但它们只是保存为单个文件。此外,代码对每个测试都有一些PASS / FAIL标准。
所以,问题是,我想用Python的一些工具将测试序列的整个故事输出为PDF。我希望能够保留一些Boiler-Plate的东西并在中间更新一些东西....例如:
Test was run for 7 minutes. Maximum power was recorded as -69.5dBm.
并且,从测试结果中提取分钟数和最大功率数。此外,图表是从'matplotlib'中提取的。
所以,对于每个测试,我想附加一些Boiler-plate文本,用实际数据填充一些空白,并在适当的时候拍一张图片,我想用Python做。
我查看了有关SO的一些建议,但在大多数情况下,解决方案似乎是为现有的现有 PDF附加或加水印。此外,Google为自动生成Python代码文档提供了大量结果...而不是使用Python生成文档的代码。
Reportlab看起来很有希望,但看起来它已被抛弃了。
另外,我并不认为输出是PDF的要求。这仅供内部使用,因此有一些灵活性。 HTML,Word或其他可以由用户手动转换为PDF的内容也可以。我知道PDF由于其二元性质而有些麻烦。
答案 0 :(得分: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()