Python

Python 이미지파일(jpg) pdf로 바꾸기

인생마린 2022. 6. 27. 15:30
반응형

img2pdf활용

패키지 설치

 
pip install img2pdf

먼저 img2pdf라는 라이브러리를 받아주자

 

소스코드

# jpg to pdf with img2pdf
import os
from img2pdf import convert


realpath = r"D:/github/marinelifeirony/Python/Pillow/images"
absolutepath = r"images"

with open("out.pdf", "wb") as f:
	image_list = []

	for file in os.listdir(realpath):
		if file.endswith(".jpg"):
			image_list.append(realpath + '/' + file)
	print(image_list)
	pdf = convert(image_list)
	f.write(pdf)

realpath이나 absolutepath 둘중 맘에 드는거로 경로 적어주고 실행해보자.

absolutepath을 쓰고 싶은 경우 realpath 부분을 다 absolutepath으로 바꿔주어야 된다.

 

결과

정상적으로 3개의 이미지가 차례로 합쳐져 pdf로 생성되었다.

에러가 나는 경우

이런식으로 에러가 나는 경우는 BytesIO에서 해당 경로에서 파일을 찾지 못했을때 나타난다.

파일 경로가 제대로 작성되었나 확인하는게 좋다.

다른 블로그에 돌아다니는 코드를 보니

image_list.append(file)

이런식으로 파일이름만 추가해서 convert함수에 넘겨주던데 이러면 BytesIO에서 파일을 못찾는다.

반드시 전체 상대경로나 절대경로를 넣어줘야한다.

 

pillow사용

패키지설치

pip install Pillow

 

소스코드

# jpg to pdf with pillow
import os
from PIL import Image


realpath = r"D:/github/marinelifeirony/Python/Pillow/images"
absolutepath = r"images"

images = [
	Image.open(realpath + '/' + f)
	for f in os.listdir(realpath)
]

images[0].save(
	"out.pdf", "PDF", resolution=100.0, save_all=True, append_images=images[1:]
)

결과물은 비슷하나 개인적으로는 pillow를 사용해서 만드는것을 추천한다.

반응형