reportlab pdfgen 无法创建 PDF

问题描述 投票:0回答:1

我需要一些关于我目前正在使用 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。

有什么想法我犯了错误吗?

感谢大家的帮助!

python pdf-generation reportlab
1个回答
0
投票

您可能想检查从另一个文件调用该函数时工作目录或文件路径是否存在差异。有时,相对路径可能会导致问题,具体取决于脚本的执行位置。

此外,如果您经常使用 PDF 报告,那么可能值得研究一下 CxReports 工具。它可以自动生成和分发大量 PDF,可以节省您一些时间。

© www.soinside.com 2019 - 2024. All rights reserved.