【问题标题】:How to convert JSON data to PDF using python script如何使用 python 脚本将 JSON 数据转换为 PDF
【发布时间】:2018-06-24 01:18:37
【问题描述】:

我想将 JSON 数据转换为从 API 获取的 PDF。

示例 JSON 数据

{
    "data": [
        {
            "state": "Manchester",
            "quantity": 20
        },
        {
            "state": "Surrey",
            "quantity": 46
        },
        {
            "state": "Scotland",
            "quantity": 36
        },
        {
            "state": "Kent",
            "quantity": 23
        },
        {
            "state": "Devon",
            "quantity": 43
        },
        {
            "state": "Glamorgan",
            "quantity": 43
        }
     ]   
}

我找到了这个脚本: http://code.activestate.com/recipes/578979-convert-json-to-pdf-with-python-and-xtopdf/

但得到错误

没有模块 PDFWriter

还有其他方法可以转换 JSON 数据 PDF。

请帮忙。

【问题讨论】:

标签: python json pdf


【解决方案1】:

模块 PDFWriter 在xtopdf

PDFWriter - xtopdf 工具包的核心类 - 现在可以与 一个 Python 上下文管理器,也就是 Python with 语句。

(http://code.activestate.com/recipes/578790-use-pdfwriter-with-context-manager-support/)

如何安装xtopdfhttps://bitbucket.org/vasudevram/xtopdf

安装使用:

要安装文件,首先确保您已下载并安装 安装了上面提到的所有先决条件,包括设置 诸如将所需目录添加到 PYTHONPATH 等步骤。然后,复制 xtopdf.zip 中的所有文件到您的目录中 PYTHONPATH。

要使用任何 Python 程序,请将 .py 文件运行为:

python 文件名.py

这将给出关于正确用法和参数的用法消息 预计。

要运行 shell 脚本,请执行与上述相同的操作。

开发人员可以查看源代码以获取更多信息。

另一种方法是使用pdfdocument 创建pdf,可以使用pip (https://pypi.python.org/pypi/pdfdocument) 安装它

从 json 数据 (How can I parse GeoJSON with Python, Parse JSON in Python) 中解析数据并使用 pdfdocument (https://pypi.python.org/pypi/pdfdocument) 将其打印为 pdf

  import json
  data = json.loads(datastring)

from io import BytesIO
from pdfdocument.document import PDFDocument

def say_hello():
    f = BytesIO()
    pdf = PDFDocument(f)
    pdf.init_report()
    pdf.h1('Hello World')
    pdf.p('Creating PDFs made easy.')
    pdf.generate()
    return f.getvalue()

【讨论】:

    【解决方案2】:
    from json2html import *
    import json
    import tempfile
    
    class PdfConverter(object):
    
        def __init__(self):
            pass
    
        def to_html(self, json_doc):
            return json2html.convert(json=json_doc)
    
        def to_pdf(self, html_str):
            return pdfkit.from_string(html_str, None)
    
     def main():
         stowflw = {
         "data": [
            {
                "state": "Manchester",
                "quantity": 20
            },
           {
                "state": "Surrey",
                "quantity": 46
           },
           {
                "state": "Scotland",
                "quantity": 36
           },
           {
                "state": "Kent",
                "quantity": 23
           },
           {
                 "state": "Devon",
                 "quantity": 43
           },
           {
                 "state": "Glamorgan",
                 "quantity": 43
           }
         ]
       }
    
        pdfc = PdfConverter()
        with open("sample.pdf", "wb") as pdf_fl:
           pdf_fl.write(pdfc.to_pdf(pdfc.to_html(json.dumps(stowflw))))
    
    1. 安装json2html
    2. 安装 pdfkit(需要 wkhtmltox)

    【讨论】:

      猜你喜欢
      • 2020-09-19
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 2022-06-10
      • 2021-12-04
      相关资源
      最近更新 更多