이슈 발생
ppt, pdf 문서 전처리 하던 와중에 ppt 슬라이드 전체를 img하여 전처리 하려고 했으나,
pymupdf 라이브러리 내에서 get_pixamap의 기능은 ppt 슬라이드를 이미지화하는 것이 아닌, 뭔가 이미지를 찾아
그 이미지를 추출해서 진행하는 코드같았다.
슬라이드 자체를 이미지화해야 했기 때문에 코드 수정이 필요했다.
https://pymupdf.readthedocs.io/en/latest/recipes-images.html
배치성으로 파이프라인을 구축해야 하다보니, 로컬에서 하나하나 작업할 수 없었고, ppt를 슬라이드화 하려면 pdf로 만들어야했다.
구글링해보니 스택오버플로우에서 ppt to pdf를 하는 방법을 알려줬는데 , windows 방법이 베이스에 깔려 있었다..
안타깝게도 화자의 pc는 mac이다 ^^..
중국 사이트 바이두까지 찾아가서 검색했더니, cli 환경에서 작업할 수 있는것을 발견했고 바로 작업 진행하였다.
https://stackoverflow.com/questions/61815883/how-to-export-pptx-to-image-png-jpeg-in-python
windows를 작업하는 분은 위의 스택오버플로우를 참고하면 될 것 같다.
리눅스 혹은 우분투, mac을 사용하시는 분들은 아래의 방법을 참고하면 될 것 같다.
해결방법
!apt-get install libreoffice -y
!apt-get install -y unoconv
!apt-get install fonts-nanum
!fc-cache -fv
위의 코드는 Linux 환경에서 LibreOffice, unoconv 및 나눔 폰트를 설치하고 최신 폰트 캐시를 업데이트하는 명령어들이다.
나눔폰트를 설치하지 않으면, 한글이 잘 보이지 않는 등 에러가 발생하여, 폰트를 설치하는 것을 추천한다.
- !apt-get install libreoffice -y: 이 명령어는 apt-get을 사용하여 LibreOffice를 설치하는 명령어다.
-y 옵션은 설치 동안 나오는 모든 질문에 자동으로 "yes"로 응답하며 사용자에게 확인 메시지가 나오지 않고 설치가 진행된다. - !apt-get install -y unoconv: 이 명령어는 unoconv를 설치하는 명령어다.
unoconv는 LibreOffice의 Python 인터페이스를 사용하여 문서를 다양한 형식으로 변환하는 데 사용되는 명령어다. - !apt-get install fonts-nanum: 이 명령어는 나눔 폰트를 설치한다.
- !fc-cache -fv: 이 명령어는 시스템의 폰트 캐시를 업데이트한다. 새로 설치된 폰트를 시스템에 적용하기 위해 사용한다고 생각하면 된다.
import subprocess
# libreoffice 명령어 실행
subprocess.run('libreoffice --headless --invisible --convert-to pdf test.pptx', shell=True)
Python의 subprocess 모듈을 사용하여 명령줄에서 LibreOffice를 실행하여 PPTX 파일을 PDF로 변환하는 것이다.
여기서 사용된 명령어는 다음과 같다:
- libreoffice: LibreOffice를 실행하는 명령어다.
- --headless: LibreOffice를 GUI(그래픽 사용자 인터페이스) 없이 실행하도록 지정하는 옵션입니다. 이 옵션을 사용하면 LibreOffice가 백그라운드에서 실행된다.
- --invisible: LibreOffice를 실행할 때 GUI 창을 표시하지 않도록 하는 옵션이다.
- --convert-to pdf: 변환할 파일 형식을 지정하는 옵션입니다. 여기서는 PPTX 파일을 PDF로 변환하도록 지정하고 있다.
- test.pptx: 변환할 대상 파일의 경로 및 파일 이름입니다. 여기서는 test.pptx라는 파일을 변환한다.
정리하자면, subprocess.run() 함수를 사용하여 명령어를 실행하고, shell=True 옵션을 사용하여 셸에서 명령어를 실행하도록 한다.
이 코드를 실행하면, test.pptx 파일이 현재 작업 디렉토리에 있는 경우 LibreOffice가 해당 파일을 PDF로 변환하고 결과 파일을 생성한다.
--outdir 로 결과 경로도 지정할 수 있으니 참고 바란다.