On this page
PDF 파일을 JPG나 PNG로 변환하기 위해서는 몇 가지 외부 라이브러리를 사용할 수 있습니다. 여기서는 가장 대중적인 라이브러리 중 하나인 pdf2image
를 사용하는 방법을 설명하겠습니다. pdf2image
는 PDF 문서에서 이미지를 추출하여 JPG, PNG 등의 포맷으로 저장할 수 있도록 해줍니다.
설치
먼저 필요한 라이브러리를 설치해야 합니다. pdf2image
와 PDF 파일을 처리하기 위한 Pillow
(PIL Fork) 라이브러리를 설치하세요:
pip install pdf2image Pillow
코드 예제
아래는 PDF 파일의 모든 페이지를 PNG 이미지로 변환하는 간단한 예제 코드입니다.
from pdf2image import convert_from_path
# PDF 파일 경로
pdf_path = 'example.pdf'
# 결과 이미지를 저장할 폴더
output_folder = '/path/to/output/folder'
# PDF 파일을 이미지 리스트로 변환
images = convert_from_path(pdf_path)
# 각 페이지를 이미지 파일로 저장
for i, image in enumerate(images):
image_path = f'{output_folder}/page_{i + 1}.png'
image.save(image_path, 'PNG')
print(f'Saved {image_path}')
여러 페이지 처리
위 코드는 PDF의 모든 페이지를 순회하며 각 페이지를 별도의 이미지 파일로 저장합니다. convert_from_path
함수는 PDF 파일의 각 페이지를 PIL 이미지 객체의 리스트로 반환합니다. 이 리스트를 순회하면서 각 이미지를 원하는 포맷으로 저장할 수 있습니다.
포맷 변환
만약 JPG로 저장하고 싶다면, image.save
함수에서 파일 포맷을 'JPEG'로 지정하고 파일 확장자를 .jpg
로 변경하세요.
image.save(image_path, 'JPEG')
고급 설정
convert_from_path
함수는 다양한 파라미터를 제공하여 변환 과정을 세밀하게 조정할 수 있습니다. 예를 들어, 출력 이미지의 DPI를 설정하거나, 특정 페이지만 변환하는 등의 작업이 가능합니다. 공식 문서나 해당 라이브러리의 GitHub 페이지에서 더 많은 정보를 얻을 수 있습니다.
이 방법을 통해 PDF 파일을 이미지로 효율적으로 변환할 수 있으며, 대량의 문서 처리에도 적합합니다.
이미지로 변환할 때 파일 크기를 (예를들어) 200KB 이하로 제한하려면, 이미지를 저장할 때 압축 수준을 조절하거나 해상도를 조절해야 합니다. Pillow
라이브러리를 활용하여 이미지의 품질을 조절하고 저장하는 방법을 살펴보겠습니다.
해상도 조절
이미지의 해상도를 낮추어 파일 크기를 줄일 수 있습니다. 해상도를 낮추면 이미지의 디테일이 감소하므로 적절한 해상도를 찾는 것이 중요합니다.
품질 조절
JPEG 형식으로 저장할 때는 quality
파라미터를 사용하여 품질을 조절할 수 있습니다. PNG의 경우 optimize=True
를 설정하여 약간의 파일 크기 감소를 얻을 수 있습니다.
코드 예제
아래 코드는 PDF의 각 페이지를 변환한 후, 이미지의 해상도를 조절하고 파일 크기가 200KB를 넘지 않도록 품질을 조정하는 방법을 보여줍니다. JPEG 형식을 사용하여 예제를 제공하겠습니다.
from pdf2image import convert_from_path
import os
# PDF 파일 경로와 출력 폴더
pdf_path = 'example.pdf'
output_folder = '/path/to/output/folder'
# PDF를 이미지로 변환
images = convert_from_path(pdf_path)
for i, image in enumerate(images):
# 이미지 해상도 조절 (옵션, 필요에 따라 조정)
image = image.resize((int(image.width * 0.75), int(image.height * 0.75)), resample=Image.LANCZOS)
# 초기 품질 설정
quality = 95
while True:
# 이미지 저장 경로 및 파일명
image_path = f'{output_folder}/page_{i + 1}.jpg'
# 이미지 저장
image.save(image_path, 'JPEG', quality=quality)
# 파일 크기 체크
if os.path.getsize(image_path) > 200 * 1024: # 200KB 보다 크면
quality -= 5 # 품질 5% 감소
if quality < 10: # 최소 품질 설정
break
else:
break
print(f'Saved {image_path} at quality {quality} with size {os.path.getsize(image_path)/1024:.2f}KB')
이 코드는 PDF의 각 페이지를 변환 후, 저장되는 파일의 크기가 200KB를 초과하면 JPEG의 품질을 점진적으로 감소시켜 파일 크기를 줄입니다. 해상도를 조절하는 코드 라인은 옵션으로, 필요에 따라 주석 처리하거나 조절할 수 있습니다. 파일 크기가 원하는 범위에 들어갈 때까지 품질을 조절하는 방식을 사용하므로, 파일 크기와 품질 사이의 균형을 적절히 맞출 수 있습니다.
공식 홈페이지