안녕하세요 - 나와 같은 경우입니다. 나는 나의 해결책을 설명 할 것이다. 내가 PdfFileReader('filename.pdf', 'rb')
와 함께 pdfs를 열지는 않지만 병합 (pdfs_content_array
)을위한 배열에 pdfs 컨텐트를 전달하고 있습니다. 그런 다음 합병과 출력을 준비 중입니다 (생성 된 파일을 로컬에 저장하지 말고 병합 된 컨텐츠를 어딘가에 저장해야합니다.) 페이지 번호 결과를 비교하려면 calc_page_sum
이 필요합니다. 가장 중요한 부분은 다음과 같습니다. calc_page_sum += PdfFileReader(bytes_content).getNumPages()
그래서 PdfFileReader로 바이트 내용을 열고 페이지 번호를 가져옵니다. 그런 다음 합병을 추가 할 것입니다. ... merger.append,bytes_content
merge를 내 바이트 출력에 쓰고 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()
희망이 도움이 될 것입니다!
2 버전 :
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()
어쩌면 페이지 수를 유지하여 합병 객체 래퍼를 만들고 주위에 있음을 전달합니다. –
네, 그 옵션입니다. PdfFileWriter와는 달리, PdfFileMerger는 getNumPages()와 같은 메소드를 갖고있는 것처럼 보이지 않으며이 기능을 구현하기 위해 래퍼 객체를 만들어야하는 것처럼 보입니다. – arbitguy