문서파일 업로드 시 pdf로 변경하기

LibreOffice 라는 오피스 프로그램을 설치하면, soffice 라는 명령어를 쉘에서 사용 할 수 있다
이 soffice를 사용해서 문서를 업로드 할 때 pdf파일로 변경시켜보자



* alias 설정을 통해서 그냥 soffice를 사용하였지만, 명령어 위치는 /Applications/LibreOffice.app/Contents/MacOS/soffice

업로드 됨과 동시에 파일을 변경해서 변환한 pdf 파일을 사용하도록 만들려면 signals를 사용해야한다.
장고에서 제공하는 signal과 post_save를 사용하면, 업로드 직 후에 모델에 설정을 할 수 있다.

# signals.py














Document 모델이 생성 될때, 이 시그널을 호출하는데, 해당 객체를 불러오고( kwargs['instance'])
그 객체에서 업로드 파일을 가져온다. 그 후에 업로드 된 위치를 구하고, 그 위치에 저장된 파일을 같은 이름의 
pdf파일로 생성해준다.
그 후에 해당 객체가 지닌 docs를 변경한 pdf 파일로 변경해주면 객체는 pdf파일을 업로드 파일로 가지게 된다.

# apps.py











시그널을 사용하려면 apps 파일에 다음과같이 사용하겠다고 명시해준다

# __init__.py


이 파일에서도 설정을 해줘야 시그널이 사용 가능 해진다.

댓글