Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Reportlab将报告合并为一个PDF_Python_Python 3.x_Pdf_Reportlab - Fatal编程技术网

Python Reportlab将报告合并为一个PDF

Python Reportlab将报告合并为一个PDF,python,python-3.x,pdf,reportlab,Python,Python 3.x,Pdf,Reportlab,我正在写一个程序来自动化我们的报告。我发现下面的方法可以将数据转换为pdf格式,效果很好。我稍微修改了一下,但没有修改太多。我能够单独生成所有报告,但似乎无法将它们全部打印到一个pdf 下面是一个从db调用格式化一个数据集以及如何调用脚本的示例 def datafilter(tuna): data = [] for name, number, count in tuna: data.append({'name': name,

我正在写一个程序来自动化我们的报告。我发现下面的方法可以将数据转换为pdf格式,效果很好。我稍微修改了一下,但没有修改太多。我能够单独生成所有报告,但似乎无法将它们全部打印到一个pdf

下面是一个从db调用格式化一个数据集以及如何调用脚本的示例

def datafilter(tuna):

    data = []

    for name, number, count in tuna:
        data.append({'name': name,
                     'number': number,
                     'count': count})

    fields = (
        ('name', 'Location'),
        ('number', 'Number'),
        ('count', 'Call Count'),
    )

    doc1 = DataToPdf(fields, data, sort_by=('name', 'DESC'),
                    title='Main Number Called')
    doc2 = DataToPdf(fields1, data1, sort_by=('name', 'DESC'),
                    title='Main Number Called')
    doc = doc1, doc2
    doc.export('Main_Calls.pdf')
我试过用各种方法处理
doc.export
调用,但都无法让它正常工作。我想我可能需要在某个地方创建一个循环。创建doc变量时,我尝试将数据作为元组填充到其中,但出现错误,说“export method can't take tuple”

至少有人能给我指出正确的方向吗。我对这个还是比较新的

编辑**回溯

/usr/bin/python3.5 /root/PycharmProjects/ReportApp/FML/apendhelp.py
Traceback (most recent call last):
  File "/root/PycharmProjects/ReportApp/FML/apendhelp.py", line 53, in <module>
    masterin()
  File "/root/PycharmProjects/ReportApp/FML/apendhelp.py", line 50, in masterin
    datafilter1(main_bk, top_bk)
  File "/root/PycharmProjects/ReportApp/FML/apendhelp.py", line 38, in datafilter1
    poop.export('mater.pdf')
AttributeError: 'tuple' object has no attribute 'export'
/usr/bin/python3.5/root/PycharmProjects/ReportApp/FML/apendhelp.py
回溯(最近一次呼叫最后一次):
文件“/root/PycharmProjects/ReportApp/FML/apendhelp.py”,第53行,在
masterin()
masterin中的文件“/root/PycharmProjects/ReportApp/FML/apendhelp.py”,第50行
数据过滤器1(主过滤器、顶部过滤器)
datafilter1中的第38行文件“/root/PycharmProjects/ReportApp/FML/apendhelp.py”
poop.export('mater.pdf')
AttributeError:“元组”对象没有属性“导出”

所以我没能把它制作成一个完整的pdf,但我确实找到了解决办法。我设置了一个主按钮来生成所有报告。然后是一个合并按钮,它将扫描目标文件夹,找到所有pdf,并使用PyPDF2的PdfileMerger将它们附加到一个主pdf中。这是其他人需要的代码

def pdf_merger():
    files_dir = '/root/PycharmProjects/ReportApp/FML/Pdf_Docs'

    pdf_files = [f for f in os.listdir(files_dir) if f.endswith("pdf")]
    merger = PdfFileMerger()

    for filename in pdf_files:
        merger.append(PdfFileReader(os.path.join(files_dir, filename), "rb"))

    merger.write(os.path.join(files_dir, "merged_full.pdf"))
    merger.close()

显然,您需要编辑
files\u dir
变量以满足您的需要,否则这应该可以正常工作。

错误中的
poop
是一个
元组(这正是错误消息所说的),而不是它应该是的
DataToPdf
对象。我相当肯定你的小例子不会在那一行产生同样的错误。请确保您发布的虚拟示例仍然会导致相同的错误(这是“MCVE”中的“C”)。您的权利对不起,我刚刚发现我将对其进行一些编辑,但我已将“doc”变量转换为一个元组如果您“将其转换为一个元组”,为什么您希望它具有
.export
方法?您链接到的页面以及从中获取代码的页面是否将其转换为元组?看到问题了吗?我链接的页面也定义了导出方法。不,我想我只懂一半。我有点像个傻瓜。我知道它不需要一个元组,我已经尝试了一系列的解决方法,但我还不够好,无法得到它:(
doc.export
是类
DataToPdf
(doc1,doc2)的方法。export
将是类
元组的方法,因为
(doc1,doc2)
是一个元组,不管里面是什么。元组没有一个
导出
方法,就这么简单。你只能调用
。导出
对象上的
数据topdf
对象。如果你想在同一个pdf文件中放两样东西:嗯,你有一个问题需要解决,但你可能需要使用一个调用
.export
,以及
DataToPdf
对象上的rt。