FPDF 在 Python 中生成空白页面

Posted

技术标签:

【中文标题】FPDF 在 Python 中生成空白页面【英文标题】:FPDF produces empty pages in Python 【发布时间】:2017-03-24 19:46:13 【问题描述】:

我编写了 Python 脚本,该脚本将根据带有 JPEG 的文件夹生成 PDF。没什么特别的:

import os
from fpdf import FPDF

folders = [ ... here are numbers - folders are numbered ... ]

for folder in folders:
    pdf = FPDF()        
    for fil in os.scandir("parent folder" + str(folder) + "/"):
        pdf.add_page()
        pdf.image(fil.path, w=210, h=297)
    pdf.output("target location/" + str(folder) + ".pdf", "F")

然而,此代码会导致 PDF 每隔一页空白。有趣的是这段代码:

import os
from fpdf import FPDF

folders = [ ... here are numbers - folders are numbered ... ]

for folder in folders:
    pdf = FPDF()        
    pdf.add_page()
    for fil in os.scandir("parent folder" + str(folder) + "/"):
        pdf.image(fil.path, w=210, h=297)
    pdf.output("target location/" + str(folder) + ".pdf", "F")

生成第一页为空的文件,其余部分正确。

我没有看到明显的解决方法 - 看起来有点像 fpdf 库。还是不是?

【问题讨论】:

另外,如果你忽略这个单一的 add_page 调用,代码会失败——仅供参考 您尝试过更小的尺寸吗?它可能会自动移动到下一页。 【参考方案1】:

请尝试禁用 fpdf 中的自动分页模式。为此,请致电set_auto_page_break(0)。 我遇到了这个问题,这是我的解决方案。希望对您有所帮助!

from fpdf import FPDF 
pdf = FPDF()
pdf.set_auto_page_break(0)

更多信息,请查阅最新文档: http://pyfpdf.readthedocs.io/en/latest/reference/set_auto_page_break/

【讨论】:

谢谢,不幸的是,我可能仍在 2016 年解决了这个问题,我认为我没有触发这个问题的代码。不能真正评论它是否是正确的答案。不过,感谢您回到这里【参考方案2】:

我解决这个问题的方法是使用:

pdf.set_auto_page_break(0)

在我启动 PDF 对象然后在每次插入图像之前添加一个页面之后。示例代码为:

from fpdf import FPDF
import os

pdf = FPDF(orientation = 'L') #if you want your pdf to be in Landscape mode
pdf.set_auto_page_break(0)

for i in range(10):
    image_location = os.getcwd() + '\\image_' + str(i) + '.jpg'
    pdf.add_page()
    pdf.image(image_location, w=270) #270 used for A4 paper in Landscape orientation
pdf.output('my_pdf.pdf')

使用上述代码生成的 PDF 文件没有空白页。

【讨论】:

以上是关于FPDF 在 Python 中生成空白页面的主要内容,如果未能解决你的问题,请参考以下文章

html2canvas对于90000的页面,会渲染成空白页面吗

word表格被奇怪的横线分隔了,还有中间一大段空白拉不上去?

s-s-rS 报告中的空白页和对齐问题

vue项目打包之后页面空白解决办法

关于页面切换的问题

vue 如何设置点击空白处的遮罩层关闭弹窗