FPDF在Python中生成空页

时间:2016-11-10 17:13:01

标签: python pdf-generation fpdf

我编写了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库。或者不是吗?

2 个答案:

答案 0 :(得分:3)

请尝试在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/

答案 1 :(得分:0)

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

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文件没有空白页。