인생마린
어떤 공부 블로거의 금서목록
인생마린
전체 방문자
오늘
어제
  • 전체 (155)
    • C언어 (19)
    • Python (14)
      • Flask (0)
    • Coding Challenge (11)
      • Code Clone & Review (0)
      • Toy Project (0)
      • 오늘의 코드 (5)
    • Algorithm (6)
    • JAVA (8)
    • 웹 (8)
      • Javascript (3)
    • 정보보안 (19)
    • 기타 (21)
    • 일기는일기장에 (2)
    • 리눅스 (4)
    • 철학 (1)
    • 주식 (14)
    • AI (2)
    • 독후감 (13)
    • 프로그래밍 (4)
    • 게임 (1)
    • Devops (2)
      • CI_CD (2)
      • AWS (0)
    • Flutter (3)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • TFT
  • Regular Expression
  • Bitcoin
  • python #eval #dictionary
  • 폭락
  • 비트코인
  • c언어
  • flask
  • 주식 #배당주
  • Flutter
  • 주린이 #주식
  • 퀴즈봇
  • 해커톤
  • 정규표현식
  • Python
  • best of best
  • 코인
  • Sphinx
  • turtle
  • 카카오톡봇
  • 가상화폐
  • Regex
  • smtplib
  • Java
  • 백테스팅
  • 불편한사회
  • 우영우 #패러디논란
  • 테라
  • 주식 #ETF
  • vpn

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
인생마린

어떤 공부 블로거의 금서목록

Python 이미지파일(jpg) pdf로 바꾸기
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를 사용해서 만드는것을 추천한다.

반응형
저작자표시 비영리 (새창열림)

'Python' 카테고리의 다른 글

python 무료 vpn을 통해 ip 바꾸기  (1) 2022.07.24
python pandas 중복된 데이터를 가진 행을 하나로 줄이기 reduce  (1) 2022.07.19
파이썬 유튜브 영상 정보 다운로드하기 pytube  (0) 2022.06.20
Python smtpllib를 이용한 이메일 보내기  (0) 2022.03.10
파이썬 regex 정규표현식으로 match된 부분 while문으로 하나씩 변경하기  (0) 2021.05.25
    'Python' 카테고리의 다른 글
    • python 무료 vpn을 통해 ip 바꾸기
    • python pandas 중복된 데이터를 가진 행을 하나로 줄이기 reduce
    • 파이썬 유튜브 영상 정보 다운로드하기 pytube
    • Python smtpllib를 이용한 이메일 보내기
    인생마린
    인생마린
    즐거운 프로그래밍~♬

    티스토리툴바