어제 쓴 글에 현재 백수 상태임을 적었는데 ㅠㅠ.. 회사 퇴직 하자마자 전기기사 자격증을 따보려고 공부하는 중이다.
필기는 일단 한번에 합격했으나... 실기는 KEC 배점이 에휴... 2025년도 1회차 시험 보신 분들은 다들 공감하실거라 생각한다.
계산 문제를 다 맞아도 KEC와 감리에서 그냥 나가 떨어졌다. 필기때 공부했던거 기억도 안나고, 배점 높은 단답/수변전 위주로 공부했는데, 망했다.
아쉽기도하고 이대로 좌절하기만 할 수는 없기에 다시 공부를 시작해보려고 PC를 켰다.
기존에 듣던 인강과 기출 문제는 이미 다 풀고 여기저기 풀이를 해놓았던터라 기출문제 PDF를 찾거나 셀프로 만들어서 해보려고하다가 에듀윌에서 350제 다빈출 문제집 PDF를 무료로 배포하기에 일단 다운로드쓰~
아.. 그런데 문제 바로 밑에 정답과 해설이 있네.. 원래 보던 책도 이래서 조금 거슬렸는데.
책을 볼때마다 종이 쪼가리로 정답부분을 가리면서 보느라 귀찮기도하고, 얼핏 눈에 보이기라도 하면 집중력도 흐트러지고..
아무튼 그래서 PDF를 문제와 정답으로 분리해서 보면 어떨까 싶어 copilot에 물어봤다.
내가 사용하는 LG 그램 노트북에 기본 제공되는 기능임. chatGPT와 번갈아 가면서 사용한다.
그래서 물어 봤더니... (공손하게 존댓말로. 왜냐면 아쉬운건 나니까)
"지금 업로드한 pdf 파일은 전기기사 기출문제 모음입니다. 문제와 해설을 완전히 따로 분리해서 두개의 pdf로 나누고 싶습니다. 정답은 분홍색 상자모양으로 '정답'이라고 되어있으니 구분하기는 쉽습니다. 가능합니까?"
"음.. PyMuPDF 오키"
강조하건데 이 글은 PDF 를 분리하는 과정에 대한것이다.
어차피 댓글 기능은 막았으니 상관없지만.. 정답, 해설이 분리된 pdf 파일을 여기에 올릴수는 없다. 저 책을 엮어내느라 고생하신 분들의 저작권 문제도 있고... 에듀윌 회원 가입을 하시고 원하는 혜택을 알아보시기를 바란다.
이제 시작해볼까?
뭐 그냥 대충 project 생성
(batch file 실행은 여기 참고 ==> https://info7149.tistory.com/22)
(base) C:\Users\suker\MYSRC\PythonPrj>createPrj.bat Enter the project name: pdfsep Enter the python version: 3.12.9 Channels: - conda-forge - defaults Platform: win-64 Collecting package metadata (repodata.json): done Solving environment: done ==> WARNING: A newer version of conda exists. <== current version: 25.1.1 latest version: 25.3.1 Please update conda by running $ conda update -n base -c defaults conda ## Package Plan ## environment location: C:\Users\suker\.conda\envs\pdfsep added / updated specs: - python=3.12.9 The following packages will be downloaded: package | build ---------------------------|----------------- ca-certificates-2025.1.31 | h4c7d964_1 156 KB conda-forge libexpat-2.7.0 | he0c23c2_0 138 KB conda-forge libffi-3.4.6 | h537db12_1 44 KB conda-forge liblzma-5.8.1 | h2466b09_0 102 KB conda-forge libsqlite-3.49.1 | h67fdade_2 1.0 MB conda-forge openssl-3.5.0 | ha4e3fda_0 8.6 MB conda-forge python-3.12.9 |h3f84c4b_1_cpython 15.2 MB conda-forge setuptools-79.0.0 | pyhff2d567_0 769 KB conda-forge done # # To activate this environment, use # # $ conda activate pdfsep # # To deactivate an active environment, use # # $ conda deactivate To activate the environment, use: conda activate pdfsep Project setup complete. 계속하려면 아무 키나 누르십시오 . . . (base) C:\Users\suker\MYSRC\PythonPrj>conda activate pdfsep (pdfsep) C:\Users\suker\MYSRC\PythonPrj> |
copilot이 알려준데로 pymupdf 설치
(pdfsep) C:\Users\suker\MYSRC\PythonPrj>pip install pymupdf Collecting pymupdf Downloading pymupdf-1.25.5-cp39-abi3-win_amd64.whl.metadata (3.4 kB) Downloading pymupdf-1.25.5-cp39-abi3-win_amd64.whl (16.6 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.6/16.6 MB 9.7 MB/s eta 0:00:00 Installing collected packages: pymupdf Successfully installed pymupdf-1.25.5 (pdfsep) C:\Users\suker\MYSRC\PythonPrj> |
VSCode 실행
일단 copilot이 알려준데로 기출.pdf 경로만 바꿔서 해보자
![]() |
실행 >>
(pdfsep) C:\Users\suker\MYSRC\PythonPrj\pdfsep>python pdfBBasae.py MuPDF error: format error: partial block in aes filter MuPDF error: format error: partial block in aes filter MuPDF error: format error: partial block in aes filter MuPDF error: format error: aes padding out of range: 237 MuPDF error: format error: aes padding out of range: 250 MuPDF error: format error: partial block in aes filter MuPDF error: format error: partial block in aes filter MuPDF error: format error: partial block in aes filter MuPDF error: format error: partial block in aes filter MuPDF error: format error: partial block in aes filter MuPDF error: format error: partial block in aes filter MuPDF error: format error: partial block in aes filter MuPDF error: format error: partial block in aes filter Traceback (most recent call last): File "C:\Users\suker\MYSRC\PythonPrj\pdfsep\pdfBBasae.py", line 27, in <module> 해설_pdf.save(해설파일) File "C:\Users\suker\.conda\envs\pdfsep\Lib\site-packages\pymupdf\__init__.py", line 5539, in save raise ValueError("cannot save with zero pages") ValueError: cannot save with zero pages |
음.. 암호화되어 있는것인가?
확인해봐야겠다.
13 line쯤에 추가
if doc.is_encrypted:
print("PDF는 암호화되어 있습니다.")
# 필요한 경우 암호를 입력
doc.authenticate("비밀번호")
|
음.. encypt 되어있지 않은것으로 나온다. 이번에는 그냥 구글님께 물어봤다.
https://github.com/pymupdf/PyMuPDF/discussions/3572
Error Message: MuPDF error: format error: cmsOpenProfileFromMem failed · pymupdf PyMuPDF · Discussion #3572
I am processing over 35,000 pdfs, and I continually get error message: "MuPDF error: format error: cmsOpenProfileFromMem failed". I cannot find any reference to this error in the documentation and ...
github.com
자동번역기를 돌려보니, ICC 색상 프로필 해석에 실패했을 때 발생하는 error 라고 친절하게 설명이 되어있다. 좋은 사람들이다.
하지만 별 도움은 안됐다.
이번에는 chatgpt에 여쭈어 보았다...
역시 몇가지 희망찬 방법을 제시해 주신다.
![]() |
오키...
(pdfsep) C:\Users\suker\MYSRC\PythonPrj\pdfsep>pip install pikepdf Collecting pikepdf Downloading pikepdf-9.7.0-cp312-cp312-win_amd64.whl.metadata (8.3 kB) Collecting Pillow>=10.0.1 (from pikepdf) Downloading pillow-11.2.1-cp312-cp312-win_amd64.whl.metadata (9.1 kB) Collecting Deprecated (from pikepdf) Downloading Deprecated-1.2.18-py2.py3-none-any.whl.metadata (5.7 kB) Collecting lxml>=4.8 (from pikepdf) Downloading lxml-5.3.2-cp312-cp312-win_amd64.whl.metadata (3.7 kB) Collecting packaging (from pikepdf) Downloading packaging-25.0-py3-none-any.whl.metadata (3.3 kB) Collecting wrapt<2,>=1.10 (from Deprecated->pikepdf) Downloading wrapt-1.17.2-cp312-cp312-win_amd64.whl.metadata (6.5 kB) Downloading pikepdf-9.7.0-cp312-cp312-win_amd64.whl (3.5 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.5/3.5 MB 9.5 MB/s eta 0:00:00 Downloading lxml-5.3.2-cp312-cp312-win_amd64.whl (3.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.8/3.8 MB 10.3 MB/s eta 0:00:00 Downloading pillow-11.2.1-cp312-cp312-win_amd64.whl (2.7 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.7/2.7 MB 9.1 MB/s eta 0:00:00 Downloading Deprecated-1.2.18-py2.py3-none-any.whl (10.0 kB) Downloading packaging-25.0-py3-none-any.whl (66 kB) Downloading wrapt-1.17.2-cp312-cp312-win_amd64.whl (38 kB) Installing collected packages: wrapt, Pillow, packaging, lxml, Deprecated, pikepdf Successfully installed Deprecated-1.2.18 Pillow-11.2.1 lxml-5.3.2 packaging-25.0 pikepdf-9.7.0 wrapt-1.17.2 (pdfsep) C:\Users\suker\MYSRC\PythonPrj\pdfsep>python Python 3.12.9 | packaged by conda-forge | (main, Mar 4 2025, 22:37:18) [MSC v.1943 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import pikepdf >>> with pikepdf.open('C:\\users\\suker\\downloads\\기출.pdf') as pdf: ... pdf.save('new.pdf') File "<stdin>", line 2 pdf.save('new.pdf') ^^^ IndentationError: expected an indented block after 'with' statement on line 1 >>> with pikepdf.open('C:\\users\\suker\\downloads\\기출.pdf') as pdf: ... File "<stdin>", line 2 ^ IndentationError: expected an indented block after 'with' statement on line 1 >>> with pikepdf.open('C:\\users\\suker\\downloads\\기출.pdf') as pdf: ... pdf.save('new.pdf') ... >>> |
약간 미스 내는 인간적인 면모를 컴터에게 보여주고 변환 완료
뭔가 파일 사이즈가 약간 달라졌다.
암튼 다시 new.pdf로 실행 >>>
안된다.
break point 걸고 찍어보니 "정답" 에 걸리는게 없다. pdf 의 정답표시 부분은 text가 아니라 이미지인가보다.
X바... 삽질했으나 두어시간 재밌게 놀았다.
'개발 > Programming Python' 카테고리의 다른 글
miniconda batchfile (0) | 2025.04.22 |
---|