Innovate With Data

데이터로 더 큰 가치를 제공합니다.

맨땅에 프로그래밍/Python 복기장

Python으로 PDF 파일 암호 설정하기(feat. PyPDF)

데이터위자드 2024. 6. 4. 22:56
반응형

Python으로 PDF 파일 암호 설정하기(feat. PyPDF)

PDF 파일에 암호 하나 거는데 유료프로그램까지 써야 되는 거야?

 

 

 즐거운 데이터 생활되시고 있으십니까? 데이터위자드입니다.

 

 

요 앞전 'OA 팁' 포스팅에서,

PDF 파일에 암호를 설정하는 3가지 방법에 대해서 알아보았습니다.

 

 

[사무자동화/OA 꿀팁] - PDF 파일에 암호 설정하는 3가지 방법

 

PDF 파일에 암호 설정하는 3가지 방법

PDF 파일을 사용하다 보면 간혹 암호를 걸어야 하는 경우가 생깁니다.   안녕하세요? 데이터위자드입니다.  이번 포스팅에서는 PDF 파일에 암호를 설정하는 3가지 방법에 대해서 고찰해 보도록

datawizard.co.kr

 

 

PDF 암호설정은 크게 3가지 방법,

 

 

  1.  유료 프로그램 사용하기

  2. 온라인 PDF 편집 사이트 활용하기

  3. 알 PDF 활용하기 (개인사용자 한정)

 

이 있다고 언급했었죠.

 

 

 헌데, 통상적으로 공공기관이나 기업체에서 근무 중인 분들이라면, 위 3가지 방법을 사용하는 것이 어려울 수도 있을 것입니다. 예상되는 문제에 대한 시나리오는 대략 다음과 같겠네요.

 

 

방 법 예상되는 문제 혹은 시나리오
유료 프로그램 사용하기 예산문제로 구매 안해줌
온라인 PDF 편집 사이트 활용하기 기업 보안 문제로 Block 됨.
or 우회 시도하다가 보안팀 감사 받음
알PDF 활용하기 개인사용자 아니라서 라이선스 문제 생김

 

 

 거기다가 문득 생각해 보니, 암호하나 걸자고 유료프로그램을 구독해야 하거나 소속 단체에서 보안상 규제하는 온라인 파일 업로드까지 하면서 까지 해야 하는 건가 하는 의문, 소위 현타가 올 수 있을 것입니다.

 

 

이럴 때 우리의 표정
이럴 때 우리의 표정

 

 

어쨌든, 궁하면 통하는 법.

 

비용과 라이선스의 압박에서 벗어날 수 있는 방법을 찾아,

 

 

파이썬으로 PDF 암호 생성하기

 

 

 

를 해보도록 하겠습니다.

 

 

pypdf 라이브러리로 pdf 파일 주무르기

 

 

이번에 사용할 파이썬 패키지는 pypdf입니다.

 

 

 * python의 설치와 패키지 방법은 이전 포스팅 모음 '맨땅에 Python'을 참조해 주시길 바랍니다.

 

'맨땅에 프로그래밍/맨땅에 Python' 카테고리의 글 목록 (datawizard.co.kr)

 

'맨땅에 프로그래밍/맨땅에 Python' 카테고리의 글 목록

엔지니어 가르치는 엔지니어. 현장 자동화 라인의 공정개선 / 유지보수 / 프로젝트 관리 업무에 도움을 드립니다. 📧 simo@datawizard.co.kr

datawizard.co.kr

 

 

 

해당 패키지는 pypi 사이트에서 쉽게 찾을 수 있습니다. (다만, 비슷한 이름의 패키지가 많이 검색되므로 검색 시 주의를 요합니다.)

 

 

해당 링크는 여기입니다. ( 포스팅 작성기준 4.2.0 버전이 최신이네요.)

 

pypdf · PyPI

 

pypdf

A pure-python PDF library capable of splitting, merging, cropping, and transforming PDF files

pypi.org

 

 

pypi 내 pypdf 페이지. @pypi
pypi 내 pypdf 페이지. @pypi

 

 

pypdf의 설명을 보시면 아시겠지만, 해당 패키지는 pdf에 암호를 생성하는 기능뿐 아니라 분할, 합치기, 갈무리, 주석 생성 등 다양한 pdf 편집 기능을 수행할 수 있는 라이브러리입니다. 암호 생성은 pypdf 패키지의 다양한 기능 중 한 가지 일뿐이죠.

 

pypdf is a free and open-source pure-python PDF library capable of splitting, mergingcropping, and transforming the pages of PDF files. It can also add custom data, viewing options, and passwords to PDF files. pypdf can retrieve text and metadata from PDFs as well. - 출처 pypdf @ pypi

 

 

 

여하튼, 패키지 설치를 위해 CLI에 간단히,

 

 

pip install pypdf

 

 

를 입력하여 설치를 진행합니다. (패키지명도 군더더기 없이 근본 넘치네요.)

 

 

패키지 설치까지 끝났다면, 즐거운 코딩 시간입니다.

 

신나는 코딩시간
신나는 코딩시간

 

 

pypdf 이용하여 pdf 암호 설정 예제

 

 

사설은 그만하고 예제 코드로 바로 넘어가겠습니다. 코딩은 단 6 줄 뿐으로 매우 간단합니다.

 


 from pypdf import PdfReader, PdfWriter

 reader = PdfReader("c:/py/testpdf.pdf")                 #원본 pdf 불러오기
 writer = PdfWriter(clone_from=reader)                   #원본 pdf 가공을 위해 writer에 할당

 writer.encrypt("password1234")                          #writer에 할당된 pdf 사본에 "password1234"라는 암호 설정

 with open("c:/py/testpdf_with_password.pdf", "wb") as f:      #암호 설정된 파일을 다른 이름으로 저장
     writer.write(f)

 

 

 

실행결과로 다른 이름으로 저장된 파일을 열어보면,

 

 

암호설정된 PDF 파일
암호설정된 PDF 파일

 

 

암호가 잘 설정된 것을 보실 수 있습니다.

 

 

 6줄의 간단한 코드만으로, 라이선스 비용에 대한 이슈와 보안 이슈를 한방에 해결하였습니다.!!

 

Mission Success! @Pixabay
Mission Success! @Pixabay

 

 

다만, 파일 하나하나를 암호화하기 위해 개별로 프로그램을 작성해 주는 것은 아무래도 번거로운 작업이 될 것이기에 Pyqt5와 같은 GUI를 이용하여 사용자 편의를 도모한다면 언급된 예제보다 더 좋은 결과물이 나올 것이라 기대할 수 있겠습니다.

 

 

정리하며,

 

 

오늘은, Python과 pypdf 패키지를 활용하여 pdf파일에 암호설정하는 방법을 알아보았습니다.

 

앞서 포스팅에서 소개한 pdf암호 설정방법을 활용하기에는 라이선스나 보안에 대한 이슈가 예상되는 기관/기업 사용자분들에게 좋은 대안이 될 것이라 생각됩니다.

 

 물론, 해당 pypdf 패키지는 암호설정 기능뿐 아니라 pdf 편집을 자동화하는데 도움을 줄 수 있는 다양한 기능을 탑재하고 있는 바 이점도 눈여겨보시고 적극 활용하시길 바랍니다. (공식 문서는 아래 페이지에서 자세히 확인 가능합니다.)

 

Welcome to pypdf — pypdf 4.2.0 documentation

 

Welcome to pypdf — pypdf 4.2.0 documentation

© Copyright 2006 - 2023, Mathieu Fenniak and pypdf contributors. Revision 2ac88e63.

pypdf.readthedocs.io

 

 

 숙지하시어, 즐거운 데이터 생활 그리고 업무 되시길 바랍니다.

 

 

* 본 포스팅에서 언급된 라이브러리, 단체는 필자와 무관함을 알립니다.

 

 

 

 

도움이 되셨다면, 왼쪽 아래 '💗' 클릭 부탁드립니다. 감사합니다.

반응형