使用 pypdf2 和电子邮件合并多个 PDf

Posted

技术标签:

【中文标题】使用 pypdf2 和电子邮件合并多个 PDf【英文标题】:Merge multiple PDfs using pypdf2 and Email 【发布时间】:2020-12-29 11:05:37 【问题描述】:

我正在使用 PyPDF2 合并多个 pdf 文件,然后使用 python shutil 方法将输出复制到最终目的地,并使用 smtplib 将副本(作为附件)通过电子邮件发送给用户。

最终目的地中的合并文件显示正确,但通过电子邮件发送的副本(附件)不正确。只有数组中的第一项出现,但其余页面为空白,总页数正确。

这是我的工作流程

合并文件并保存合并到本地文件夹 --- 按预期工作 将合并的文件复制到最终目的地 --- 按预期工作 - 将合并文件的副本通过电子邮件发送到用户电子邮件地址 -- 数组中的第一个文件,之后为空页。总页数与总页数相匹配。

我正在使用以下代码来合并文件

pdf_list=['pdf_source.pdf','second_file.pdf','third_file.pdf']
for pdf in pdf_list:            
            merger.append(PdfFileReader(pdf),'rb')  
with open(merge_file_name, 'wb') as new_file:
            merger.write(new_file)

请推荐

【问题讨论】:

所以当文件保存在您的系统上时,所有页面数据都在那里,但是如果您以编程方式通过电子邮件发送文件,内容是否会被截断?如果您手动通过电子邮件发送文件,会发生什么情况?附件是否太大而被切断? 合并后的文件大小不是很大。所以,我可以手动发送电子邮件 【参考方案1】:

经过研究,我发现问题不是 pypdf2,而是文件附加到电子邮件的方式。

以下 *** 解决方案修复了该问题。

How to attach a pdf file to a MIME email in Python?

【讨论】:

以上是关于使用 pypdf2 和电子邮件合并多个 PDf的主要内容,如果未能解决你的问题,请参考以下文章

Python - PyPdf2 合并不保持 PDF 大小

一个用于合并pdf的简单Python脚本

日常从批量合并 PDF 到 PyPDF2 的使用

使用PyPDF2对pdf切边并保留书签addBookMark

技术博客——PyPDF2 & Reportlab 使用

技术博客——PyPDF2 & Reportlab 使用