我和你一样是+-。我将解释我的解决方案。我没有打开 PDF,PdfFileReader('filename.pdf', 'rb')
但我将 pdf 内容传递到一个数组中以进行合并 ( pdfs_content_array
)。然后我正在准备合并,我的输出(不想将生成的文件保存在本地,所以我必须使用 BytesIO 将合并的内容保存在某处)calc_page_sum
需要比较页码结果。最重要的部分是:calc_page_sum += PdfFileReader(bytes_content).getNumPages()
所以我用 PdfFileReader 打开字节内容并获取页码。然后我将合并添加... merger.append,bytes_content
到我的字节输出中,并将其与 calc_page_sum 进行比较。就是这样。
from PyPDF2 import PdfFileMerger, PdfFileReader
import io
[...]
def merge_the_pdfs(self,pdfs_content_array,output_file):
merger = PdfFileMerger()
output = io.BytesIO()
calc_page_sum = 0
for content in pdfs_content_array:
bytes_content = io.BytesIO(content)
calc_page_sum += PdfFileReader(bytes_content).getNumPages()
yield self.application.cpupool.submit(merger.append,bytes_content)
merger.write(output)
if not calc_page_sum == PdfFileReader(output).getNumPages():
return None
return output.getValue()
希望这会有所帮助!
第二版:
from PyPDF2 import PdfFileMerger, PdfFileReader
import io
import sys
filename1 = 'test.pdf'
filename2 = 'test1.pdf'
merger = PdfFileMerger()
output = io.BytesIO()
calc_page_sum = 0
filesarray = [filename1,filename2]
for singlefile in filesarray:
calc_page_sum += PdfFileReader(singlefile, 'rb').getNumPages()
merger.append(PdfFileReader(singlefile, 'rb'))
merger.write(output)
print(calc_page_sum)
print(PdfFileReader(output).getNumPages())
if calc_page_sum == PdfFileReader(output).getNumPages():
print("It worked")
merger.write("merging-test.pdf")
sys.exit()
print("Didn't worked")
sys.exit()