【问题标题】:How to write output data into pdf?如何将输出数据写入pdf?
【发布时间】:2018-08-27 13:39:27
【问题描述】:

我找不到如何在 python 中将输出数据(列表或函数返回)写入 pdf 的方法。这是我的简单代码。我想在pdf中逐行写入数据列表的i。但输出仅显示[1,2,3,4,5,6]。 哪个pdf模块更适合我使用?

import fpdf

data=[1,2,3,4,5,6]

pdf = fpdf.FPDF(format='letter')
pdf.add_page()
pdf.set_font("Arial", size=12)

for i in str(data):
    pdf.write(5,i)
pdf.output("testings.pdf")

【问题讨论】:

标签: python pdf fpdf


【解决方案1】:

您在将输出写入 PDF 时所做的一切都是正确的。但是你没有得到你“想要”的结果,因为你的 Python 代码不正确!

for i in str(data):
      .. do stuff with i here ..

不做你认为它做的事。只要您将data 转换为字符串,根据str(data),它就会神奇地变成字符串

[1, 2, 3, 4, 5, 6]

然后for 循环遍历该字符串的内容——它的字符——并将它们一一写入 PDF。

这是您的第一个错误。是的,您必须向pdf.write 提供一个字符串——但仅限于您要写入的每个单独项目,而不是整个输入对象。

第二个是假设pdf.write 输出一行,最后包含一个return。它没有:

此方法从当前位置打印文本。当到达右边距(或遇到 \n 字符)时,会出现换行符并且文本从左边距继续。在方法退出时,当前位置将留在文本的末尾。
(https://pyfpdf.readthedocs.io/en/latest/reference/write/index.html)

您可以使用ln 插入换行符,或在写入之前在每个字符串的末尾附加\n

工作代码:

import fpdf

data=[1,2,3,4,5,6]

pdf = fpdf.FPDF(format='letter')
pdf.add_page()
pdf.set_font("Arial", size=12)

for i in data:
    pdf.write(5,str(i))
    pdf.ln()
pdf.output("testings.pdf")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 2017-05-29
    • 1970-01-01
    相关资源
    最近更新 更多