gpt4 book ai didi

python - 如何使用给定模板生成 PDF,将 Python 或 NodeJS 中的动态数据部署在 AWS 上

转载 作者:行者123 更新时间:2023-12-03 12:12:14 25 4
gpt4 key购买 nike

在 Python(首选)或 NodeJS 中寻找可以生成 pdf 文件的库的推荐,最好从动态 html 模板中生成要在 AWS 中运行的文件。要求是生成发票 pdf 以发送给客户。

遇到过以下 2 个 Node 库:

  • PDFKit
  • jsPDF

  • 在这里,我们可能不得不处理 X 和 Y 的数字。

    更好的方法是我们可以简单地使用 html/css 生成带有占位符的模板,这些占位符可以替换为动态数据(来自数据库查询)。
    任何建议,将不胜感激。

    谢谢!

    最佳答案

    这种方法在 Python 中使用以下库对我有用:

    Jinja2 - 用于使用自定义数据生成 HTML

    xhtml2pdf - 用于从 HTML 生成 PDF

    考虑在您的项目目录中,有一个模板文件(invoice.html)和 python 文件(pdf_generator.py)

    pdf_generator.py

    from xhtml2pdf import pisa 
    import jinja2
    templateLoader = jinja2.FileSystemLoader(searchpath="./")
    templateEnv = jinja2.Environment(loader=templateLoader)
    TEMPLATE_FILE = "invoice.html"
    template = templateEnv.get_template(TEMPLATE_FILE)

    # This data can come from database query
    body = {
    "data":{
    "order_id": 123,
    "order_creation_date": "2020-01-01 14:14:52",
    "company_name": "Test Company",
    "city": "Mumbai",
    "state": "MH",
    }
    }

    # This renders template with dynamic data
    sourceHtml = template.render(json_data=body["data"])
    outputFilename = "invoice.pdf"

    # Utility function
    def convertHtmlToPdf(sourceHtml, outputFilename):
    # open output file for writing (truncated binary)
    resultFile = open(outputFilename, "w+b")

    # convert HTML to PDF
    pisaStatus = pisa.CreatePDF(
    src=sourceHtml, # the HTML to convert
    dest=resultFile) # file handle to receive result

    # close output file
    resultFile.close()

    # return True on success and False on errors
    print(pisaStatus.err, type(pisaStatus.err))
    return pisaStatus.err

    if __name__ == "__main__":
    pisa.showLogging()
    convertHtmlToPdf(sourceHtml, outputFilename)

    invoice.html
    <!DOCTYPE html>
    <html lang="en">
    <body>
    Name: {{ json_data.company_name }} <br>
    City/State: {{ json_data.city }}, {{ json_data.state }} <br>
    Date: {{ json_data.order_creation_date }} <br>
    Order ID: {{ json_data.order_id }} <br>
    </body>
    </html>

    关于python - 如何使用给定模板生成 PDF,将 Python 或 NodeJS 中的动态数据部署在 AWS 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59134487/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com