PDF를 E-Mail로 보내거나, 출력을 할때 가끔씩 파일크기가 너무 커서 잘 안되는 경우가 있습니다.
이때는 인터넷 사이트에서 PDF용량을 줄여서 작업을 수행하면 됩니다.
하지만 회원가입을 하고, 로그인을 하는 등 상당히 번거롭죠. 더욱이 횟수가 제한되어 있어요.
그래서 파이썬으로 만들어 봤습니다.
from pypdf import PdfReader, PdfWriter
reader = PdfReader("big-old-file.pdf")
writer = PdfWriter()
for page in reader.pages:
writer.add_page(page)
writer.add_metadata(reader.metadata)
with open("smaller-new-file.pdf", "wb") as fp:
writer.write(fp)
코드가 간단하죠?
pypdf 모듈을 사용해서 만들었습니다.
pypdf문서(pypdf.readthedocs.io)
pypdf 문서를 보면 pypdf를 통해 읽는것 만으로도 작동이 잘 되면 86% 용량을 줄일 수 있다고 하네요.(5.7MB을 0.8MB로)
하나씩 코드를 살펴 보도록 하겠습니다.
from pypdf import PdfReader, PdfWriter
pypdf 모듈에서 pdfReader와 pdfWriter 클래스를 가져옵니다.
reader = PdfReader("big-old-file.pdf")
writer = PdfWriter()
PdfReader 클래스에 용량을 줄이기 전 pdf 위치를 인자로 넣고, reader 인스턴스를 생성합니다.
PdfWriter도 writer로 인스턴스를 생성합니다.
for page in reader.pages:
writer.add_page(page)
선택한 PDF파일의 각 페이지를 읽고, writer에 다시 같은 페이지를 생성합니다.
writer.add_metadata(reader.metadata)
읽은 메타 데이터를 새로운 writer에 추가해줍니다.
with open("smaller-new-file.pdf", "wb") as fp:
writer.write(fp)
'smaller-new-file.pdf'로 새로운 파일을 만든 다음 아까 writer로 만든 내용을 입력해서 저장합니다.
docs에서 설명한 만큼(86%) 드라마틱하게 용량이 줄어들진 않네요. PDF 파일마다 차이가 있는 것 같습니다.
다음 포스트에서는 이것을 좀 더 쉽게 사용할 수 있도록 UI를 만들어 보도록 하겠습니다.
728x90
반응형
'파이썬(Python) > 파이썬 개발' 카테고리의 다른 글
파이썬으로 PDF 용량 줄이는 방법 3 (PDF 압축방법) (0) | 2024.01.22 |
---|---|
파이썬으로 PDF 용량 줄이는 방법 2 (PDF 압축방법) (1) | 2024.01.19 |
파이썬으로 동영상을 GiF 파일로 변환하는 프로그램 만들기(업그레이드) (1) | 2024.01.16 |
파이썬을 이용해서 동영상을 GIF 파일로 만드는 방법 (5) | 2024.01.15 |
여러 개 워드(Word, docx)파일 한 번에 쉽게 PDF로 변환하기(프로그램 무료배포) (0) | 2022.06.03 |
댓글