반응형

Python pypdf를 이용해 PDF 파일을 조작해 보자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import os
from tkinter import filedialog
from pypdf import PdfWriter, PdfReader
 
filename = filedialog.askopenfilename(
    filetypes = (("PDF 파일""*.pdf"), ("모든 파일""*.*")),
    initialdir = os.getcwd())
 
reader = PdfReader(filename)
writer = PdfWriter()
 
newname = filename[0:-4]
ext = ".pdf"
 
try:
    for index in range(len(reader.pages)):
        writer.add_page(reader.pages[index])
        with open(newname+str(index+1)+ext, "wb"as pf:
            writer.write(pf)
            writer = PdfWriter() # writer 초기화.
        print(filename + "  ===>  " + newname+str(index+1)+ext)
except:
    print("Error")
 
 

 

여러장의 PDF 파일을 각각 한 페이지로 분리하는 코드를 작성한다.

 

코드를 실행하고 4장으로 이루어진 PDF 파일을 선택한다.

 

결과가 표시된다.

 

4장으로 분리 되었다.

 

이번엔 여러개의 PDF 파일들을 하나로 합쳐보자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import os
from tkinter import filedialog
from pypdf import PdfWriter
 
filenames = filedialog.askopenfilenames(
    filetypes = (("PDF 파일""*.pdf"), ("모든 파일""*.*")),
    initialdir = os.getcwd())
 
merger = PdfWriter()
newname = filenames[0][0:-4]
ext = "_merged.pdf"
 
try:
    for pdf in filenames:
        merger.append(pdf)
    merger.write(newname+ext)
except:
    print("Error")
finally:
    print(filenames[0+ " ~ " + filenames[-1+ " merged.")
    merger.close()
 

 

코드를 작성하고 실행한다.

 

합치고 싶은 파일들을 선택한다.

 

문제가 없다면 결과가 표시된다.

 

선택한 파일들이 모두 합쳐졌다.

 

※ 참고

pypdf Documentation

 

반응형
Posted by J-sean
: