무료PDF압축 프로그램 다운로드(파이썬으로 여러 PDF 파일 한번에 용량 줄이는 방법)
본문 바로가기
파이썬(Python)/파이썬 개발

무료PDF압축 프로그램 다운로드(파이썬으로 여러 PDF 파일 한번에 용량 줄이는 방법)

by Squat Lee 2024. 1. 23.

 

 

 

무료 PDF 압축 프로그램을 공유했으니 필요하시면 아래 링크를 클릭해서 다운로드 받으시기 바랍니다.

 

비번은 댓글로 문의하시면 알려드리겠습니다.

 

무료 PDF 파일 압축 프로그램 다운로드

 

사용방법은 아래 글을 참고하시기 바랍니다.

 

파이썬 코드로 만든 프로그램입니다. 코드가 궁금하신 분은 아래 글을 참고하시기 바랍니다.


 

 

선택 방법은 지난번과 동일합니다.

 

 

이번에는 여러 파일을 한꺼번에 선택할 수 있습니다.

 

압축이 완료되었다는 메세지창이 뜨면

 

이렇게 여러개의 PDF 파일이 한꺼번에 압축된 것을 확인할 수 있습니다.

 


지난번 포스트까지만 쓰려고 했는데, 갑자기 여러 PDF 크기를 줄여야 할 때는 어떻할까 하는 생각이 들었습니다.

 

하나씩 선택하고 줄이는 작업을 반복하면 상당히 귀찮을 것이라는 생각이 듭니다.

 

그래서 한번에 여러 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:
            files_path = QFileDialog.getOpenFileNames(self) #파일불러오기
            for file_path in files_path[0]:
                print(file_path)
                old_file = file_path #첫번째 파일 이름을 저장
                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 문을 넣었고, 'QFileDialog.getOpenFilenames(self)' 클래스에서 's'를 하나 더 넣었습니다.

 

간단하게 바꾼것 치고는 효율성이 상당히 향상 되었습니다.

728x90
반응형

댓글