【问题标题】:Output a Document (preferably a PDF) from Python从 Python 输出文档(最好是 PDF)
【发布时间】:2017-05-07 15:09:39
【问题描述】:

我有一个 Python 脚本 (3.5),它将通过一系列测试。用户可以从 N 个可能的测试中选择哪些测试用完。因此,用户可以运行 1 次测试,最多 N 次测试。

现在,我只是将测试结果输出到带有matplotlib 的绘图中,看起来不错,但它们只是保存为单独的文件。此外,代码对每个测试都有一些通过/失败标准。

所以,问题是,我想使用 Python 的一些工具将测试序列的整个故事输出为 PDF。我希望能够保留一些 Boiler-Plate 的东西并在中间更新一些东西....例如:

Test was run for 7 minutes. Maximum power was recorded as -69.5dBm. 每次都一样的是:

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

并且,从测试结果中提取了分钟数和最大功率数。此外,图表是从“matplotlib”中提取的。

因此,对于每个测试,我想附加一些样板文本,用真实数据填充一些空白,并在适当的地方插入图像,我想用 Python 来做。

我查看了一些关于 SO 的建议,但在大多数情况下,这些解决方案似乎是为 现有 PDF 添加或添加水印。此外,Google 还提供了很多用于自动生成 Python 代码文档的结果...不是用于使用 Python 生成文档的代码。

Reportlab 看起来很有希望,但它看起来已经被放弃了。

另外,我不同意输出为 PDF 的要求。这仅供内部使用,因此具有一定的灵活性。 HTML、Word 或其他可以由用户手动转换为 PDF 的东西也可以。我知道 PDF 由于其二进制性质可能会有些麻烦。

【问题讨论】:

  • 你可以使用 pylatex
  • 哦……这很好。谢谢!
  • Matplotlib 有一个多页 pdf 后端。您可以将样板文件添加到单个图形中,并直接使用 matplotlib 将所有内容添加到多页 pdf 中。参见例如pylab_examples。另一种选择是reportlab

标签: python pdf matplotlib automation pdf-generation


【解决方案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()

【讨论】:

    猜你喜欢
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多