간단한 프로그램. 연습 삼아 만들어 봄.
pdftk 프로그램 설치. 사실 pdftk 만으로도 pdf 파일 합치는 건 가능하다. 명령어 치는 게 귀찮을 뿐.
GUI 프로그램을 만들어 보자.
창 하나. 그 창 안에 버튼 하나. 버튼 누르면 합칠 pdf 파일들을 선택하게 한다. 선택한 pdf 파일들을 합쳐서 새 파일 하나 만들기.
말로는 간단한데 프로그램 만드는 것은 말처럼 쉽지는 않다.
인공지능의 도움을 받아 프로그램 완성. 처음 프로그램 하는데 그 과정에서 에러가 안 나면 오히려 이상한 일. 에러 해결 역시 인공지능의 도움을 받음. 아래는 그 소스 코드.
import sys
import subprocess
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog, QMessageBox, QVBoxLayout
class PDFMerger(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.setWindowTitle('PDF 합치기 도구')
self.setGeometry(100, 100, 300, 100)
self.button = QPushButton('PDF 합치기', self)
self.button.clicked.connect(self.merge_pdfs)
layout = QVBoxLayout()
layout.addWidget(self.button)
self.setLayout(layout)
def merge_pdfs(self):
files, _ = QFileDialog.getOpenFileNames(
self,
"PDF 파일 선택",
"",
"PDF Files (*.pdf)"
)
if not files:
return
save_path, _ = QFileDialog.getSaveFileName(
self,
"저장할 파일 이름",
"merged.pdf",
"PDF Files (*.pdf)"
)
if not save_path:
return
try:
# pdftk 명령어로 파일 합치기
command = ['pdftk'] + files + ['cat', 'output', save_path]
subprocess.run(command, check=True)
QMessageBox.information(self, "성공", f"PDF가 성공적으로 저장되었습니다:\n{save_path}")
except subprocess.CalledProcessError:
QMessageBox.critical(self, "오류", "PDF를 합치는 중 오류가 발생했습니다.")
if __name__ == '__main__':
app = QApplication(sys.argv)
merger = PDFMerger()
merger.show()
sys.exit(app.exec_())
댓글 없음:
댓글 쓰기