PDF 파일에서 첫 페이지는 보통 표지인데, 표지만 고화질로 저장하고 싶을 때가 있다. PDF 리더의 이미지 내보내기 기능을 이용해 봤는데 화질이 그리 좋지 않기도 하고 파일이 많을 때는 번거로운 작업이기도 하다.
먼저 작업에 PyMuPDF 라이브러리가 필요하므로 아래와 같이 설치한다.
python -m pip install --upgrade pip
python -m pip install --upgrade pymupdf
그러고 나서 아래와 같은 스크립트를 이용하면 glob
으로 현재 디렉터리 내 PDF 파일을 모두 나열한 후 파일을 하나씩 열어서 문서의 첫 페지이만 이미지 파일로 저장하는 작업을 수행한다.
import glob, sys, fitz, os
zoom_x = 3.0
zoom_y = 3.0
mat = fitz.Matrix(zoom_x, zoom_y)
path = './'
all_files = glob.glob(path + "*.pdf")
for filename in all_files:
doc = fitz.open(filename)
page = doc[0]
pix = page.get_pixmap(matrix=mat)
filename_only = os.path.splitext(filename)[0]
print('Saving cover for {}'.format(filename_only))
pix.save(filename=f'{filename_only}_cover.png')
참고로 zoom_x
, zoom_y
의 값을 올려서 확대 배율을 높이면 그만큼 고화질 이미지로 저장된다.