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

时间:2018-01-15 11:54:39

标签: python json pdf

我想将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。

请帮助。

2 个答案:

答案 0 :(得分:0)

模块PDFWriter位于xtopdf

  

PDFWriter - xtopdf工具包的核心类 - 现在可以与之一起使用   Python上下文管理器,a.k.a。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 filename.py

     

这将给出有关正确用法和参数的用法消息   预期

     

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

     

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

另一种方法是使用pdfdocument创建pdf,可以使用piphttps://pypi.python.org/pypi/pdfdocument

进行安装

解析json数据(How can I parse GeoJSON with PythonParse JSON in Python)中的数据,并使用pdfdocumenthttps://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()

答案 1 :(得分:0)

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)