我需要一些关于我目前正在使用 Python 3.10 上的 reportlab.pdfgen 创建 PDF 报告的过程的帮助。
我使用以下代码:
def create_pdf_report(calc_output, project_id):
pdf_filename = "C:\\Users\\This_User\\Desktop\\Project Calculations\\" + project_id + ".pdf"
report_canvas = canvas.Canvas(
pdf_filename,
pagesize=A4,
)
pagewidth, pageheight = A4
rowheight = 12.5
textheight = 9
report_canvas.setFont("Helvetica", textheight)
for counter in range(int(0.9 * pageheight / rowheight)):
if counter % 2 == 0:
report_canvas.setFillColorRGB(1, 0.8, 0.6)
else:
report_canvas.setFillColorRGB(0.4, 1, 1)
report_canvas.rect(
pagewidth * 0.05,
pageheight * 0.95 - rowheight * (1 + counter),
pagewidth * 0.9,
rowheight,
stroke=False,
fill=True,
)
report_canvas.setFillColorRGB(0, 0, 0)
report_canvas.drawString(
0.075 * pagewidth,
pageheight * 0.95 - rowheight * (1 + counter) + (rowheight - textheight),
project_id + ", Line No. " + str(counter + 1)
)
report_canvas.showPage()
report_canvas.save()
print("Code has completed")
return
如果我将此代码片段作为脚本运行,即,我只需添加行
create_pdf_report(1, "Hello World Project")
到文件底部并运行它,它完美运行。
但是一旦我从另一个文件中调用它
import support_functions as spt
def my_main_function(input):
# some other code
calculation_result = 2 * input
project_string = "Hello World Project"
spt.create_pdf_report(calculation_result, project_string)
return calculation_result
my_main_function(1.0)
未生成 PDF。代码运行到底,没有抛出任何异常,“代码已完成”打印到控制台,但在指定位置没有生成PDF。
有什么想法我犯了错误吗?
感谢大家的帮助!
您可能想检查从另一个文件调用该函数时工作目录或文件路径是否存在差异。有时,相对路径可能会导致问题,具体取决于脚本的执行位置。
此外,如果您经常使用 PDF 报告,那么可能值得研究一下 CxReports 工具。它可以自动生成和分发大量 PDF,可以节省您一些时间。