
[Python]파이썬으로 PDF 붙이기
파이썬에서 제공하는 PyPDF2 라이브러리를 사용하면 손쉽게 PDF 편집(Edit)을 할 수 있습니다. 우선 PDF 문서를 붙이는 (Append, Combine, Merge) 방법에 대해 알아 보겠습니다.
방법은 아래와 같이 간단하게 진행 됩니다.
- PdfFileReader 함수로 PDF 문서 페이지 일기
- PdfFileWriter 함수로 읽은 문서를 저장 / 쓰기
아래 예제를 통해 구현해보겠습니다.
참고로 예제 구현을 위해 pdf001.pdf 파일과 pdf002.pdf 파일을 만들었고 문서(Document) 내용은 아래와 같습니다.


예제 코드>>
from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_writer = PdfFileWriter()
pdf_files = ['pdf001.pdf', 'pdf002.pdf']
for file in pdf_files:
pdf_reader = PdfFileReader(file)
for x in range(pdf_reader.getNumPages()):
pdf_writer.addPage(pdf_reader.getPage(x))
with open('pdf003.pdf', 'wb') as out:
pdf_writer.write(out)
3번 라인: PdfFileWriter 함수를 사용해서 pdf를 쓸 객체를 준비합니다.
5번 라인: 파일명을 리스트에 넣습니다.
7~10번 라인: pdf 파일의 페이지를 하나씩 일고 앞서 만든 pdf_writer 객체에 넣습니다.
12번 라인: pdf003.pdf 파일을 새로 만들고 pdf_writer 객체에 써놓은 페이지 정보를 저장합니다.
결과>>
pdf003.pdf파일이 만들어지고 내용은 아래와 같습니다.

[Python]파이썬으로 PDF 자르기
pdf 문서 페이지를 자르는 방법(Cut, Remove, Delete)도 쉽습니다. 앞서 붙이는 방법에서 붙일 때 넣고 싶지 않은 페이지를 빼주면 됩니다.
이번 예제는 앞에 붙이는 방법과 유사하므로 설명은 생략하고 아래 예제 구현으로 설명하겠습니다.
예제에 사용하는 pdf 파일은 pdf 합치기에 사용한 파일을 사용하겠습니다.
예제 코드>>
from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_writer = PdfFileWriter()
pdf_file = 'pdf001.pdf'
pdf_reader = PdfFileReader(pdf_file)
for x in range(pdf_reader.getNumPages()-1):
pdf_writer.addPage(pdf_reader.getPage(x))
with open('pdf003.pdf', 'wb') as out:
pdf_writer.write(out)
3번 라인: PdfFileWriter 함수를 사용해서 pdf를 쓸 객체를 준비합니다.
5번 라인: pdf001.pdf 파일을 편집합니다. (총 2페이지)
8번 라인: range에서 페이지 범위를 -1 의미는 마지막 페이지를 제거하기 위해서 입니다. 결국 2페이지 중에 한페이지만 남깁니다.
결과>>

PDF 페이지 편집(Editing)도 결국 위에 코드를 이용해서 원하는 페이지를 붙이거나 자르거나 순서를 바꾸거나 하는 작업입니다. 앞서 코드를 이용해서 각 페이지를 뽑을 수 있었고 저장하는 방법에 대해 알아보았으니 해당 방법을 응용해서 사용하시면 됩니다.
'파이썬(Python)' 카테고리의 다른 글
[Python] 피보나치(Fibonacci) 수열이란? 파이썬으로 구현하기 (0) | 2022.06.22 |
---|---|
[Python]텍스트를 음성으로 변조(변환)하기 (gTTS 모듈) (0) | 2022.05.10 |
[주파수] Octave 계산 방법(Calculation), 파이썬으로 구현하기 (0) | 2022.03.24 |
log함수란? 파이썬으로 계산, 그래프 그리기 (예제로 이해) (2) | 2021.10.07 |
사인, 역사인, 코사인,역코사인, 탄젠트, 역탄젠트 파이썬으로 계산하고 그리기 (Sine, Arcsine, Cosine, Arccosine, Tangent, Arctangent) (0) | 2021.10.06 |