파이썬으로 PDF 용량 줄이는 방법 3 (PDF 압축방법)
본문 바로가기
파이썬(Python)/파이썬 개발

파이썬으로 PDF 용량 줄이는 방법 3 (PDF 압축방법)

by Squat Lee 2024. 1. 22.

 

지난 포스트에 이어서 PDF 용량 줄이는 방법을 조금 더 업그레이드 했습니다.

 

전체 코드는 아래와 같습니다.

 

from pypdf import PdfReader, PdfWriter
import sys
from PyQt5.QtWidgets import *
import os

class PdfCompressor(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('PdfCompressor')
        self.setGeometry(600, 200, 400, 200)

        self.btn = QPushButton('파일찾기', self)
        self.btn.move(150, 100)
        self.btn.clicked.connect(self.btn_clicked)

        lbl = QLabel('압축할 PDF를 선택하세요.', self)
        lbl.setGeometry(20, 20, 300, 20)

    def btn_clicked(self):
        try:
            file_path = QFileDialog.getOpenFileName(self) #파일불러오기
            old_file = file_path[0] #첫번째 파일 이름을 저장
            new_file_name = 'new-' + old_file.split('/')[-1] #새로운 파일(압축된 파일) 이름
            new_file = os.path.join(*old_file.split('/')[:-1], new_file_name) #새로운 파일의 경로

            reader = PdfReader(old_file)
            writer = PdfWriter()

            for page in writer.pages:
                page.compress_content_streams()#무손실 압축방식
                for img in page.images:
                    img.replace(img.image, quality=80)#이미지 해상도 줄이기

            for page in reader.pages:
                writer.add_page(page)
            writer.add_metadata(reader.metadata) #메타데이터를 읽어서 추가


            with open(new_file, "wb") as fp:
                writer.write(fp)

            QMessageBox.about(self, '압축완료', 'PDF 압축이 완료되었습니다.')
        except:
            pass

if __name__=='__main__':
    app = QApplication(sys.argv)
    myWindow = PdfCompressor()
    myWindow.show()
    app.exec_()

 

지난번 코드와 다른 점은 무손실 압축방식을 추가했고, 이미지 해상도도 줄였습니다.

 

            for page in writer.pages:
                page.compress_content_streams()#무손실 압축방식
                for img in page.images:
                    img.replace(img.image, quality=80)#이미지 해상도 줄이기

 

pypdf 문서에서 compress_content_streams() 메소드를 사용하면 원본과 달라짐이 없지만 용량은 줄어든다고 합니다.

 

이미지 해상도도 줄여서 좀 더 줄일 수 있도록 했습니다.

 

압축을 하는 방식은 이전 포스트와 동일합니다.

파일을 찾아서 선택해 주면 됩니다.

 

압축이 완료되면 메세지 창이 뜹니다.

 

원래 파일의 용량이 크지 않고, 이미지도 없어서 크게 줄여지진 않네요.

 

좀 더 큰 용량의 파일은 획기적으로 줄어들거라 생각이 듭니다.

 

 

실행파일은 아래 링크에 공유하도록 하겠습니다. 필요하시면 다운로드 받아 가세요.

 

비번은 비밀댓글로 물어보시기 바랍니다.

 

무료 PDF 압축 프로그램 다운로드 받기

728x90
반응형

댓글