如何使用 python 脚本将 JSON 数据转换为 PDF

Posted

技术标签:

【中文标题】如何使用 python 脚本将 JSON 数据转换为 PDF【英文标题】:How to convert JSON data to PDF using python script 【发布时间】: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。

请帮忙。

【问题讨论】:

似乎 xtopdf 是这样的库或框架。这个 (jugad2.blogspot.com.tr/2012/07/…) 解释了如何安装 xtopdf 可能会对你有所帮助。 ***.com/questions/6413441/python-pdf-library 【参考方案1】:

模块 PDFWriter 在xtopdf

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

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

如何安装xtopdf在https://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))))
    安装json2html 安装 pdfkit(需要 wkhtmltox)

【讨论】:

以上是关于如何使用 python 脚本将 JSON 数据转换为 PDF的主要内容,如果未能解决你的问题,请参考以下文章

使用脚本将 VTK 转换为 JSON

python 一个将pandas数据帧转换为JSON对象的小脚本。有没有更好的办法?

使用 Python 将 CSV 文件数据转换为 JSON 格式

Python - 将 csv 文件转换为 JSON

如何将此嵌套的 JSON 以柱状形式转换为 Pandas 数据框

使用python将mySql查询结果转换为json