[Python] PDF 파일 이미지로 변환하기

PDF 파일을 일괄 이미지로 변경해야할 일이 가끔 있다..
인쇄를 막아놨다거나…..쿨럭…

필요한 부분을 한장씩 스샷 찍어서 편집하기도 그렇고 해서….파이썬으로 간단하게 스크립트를 만들었음.
이미지로 변환 + crop! (상하좌우로 여백들이 생기더라구요…-_-)

from pdf2image import convert_from_path, convert_from_bytes
from PIL import Image
import os
import glob


def conv(fname, out_dir) :
    images = convert_from_path(fname, fmt='jpg', output_folder=out_dir, poppler_path = r"Release-22.01.0-0\\poppler-22.01.0\\Library\\bin")


def image_crop( infilename , save_path): 
    img = Image.open( infilename )
    (img_w, img_h) = img.size
    print(img.size)
 
    #bbox = (h*grid_h, w*grid_w, (h+1)*(grid_h), (w+1)*(grid_w))
    s_x = 105
    s_y = 105
    e_x = img_w - 105
    e_y = img_h - 105
    bbox = ( s_x, s_y, e_x, e_y)


    # 가로 세로 시작, 가로 세로 끝
    # Returns a rectangular region from this image. 
    # The box is a 4-tuple defining the left, upper, right, and lower pixel coordinate. See Coordinate System.
    crop_img = img.crop(bbox)

    fname = os.path.basename(infilename)
    savename = os.path.join(save_path, fname)
    crop_img.save(savename)
    print('save file ' + savename + '....')
    

def conv_and_cut(fname) :
    out_dir = os.path.basename(fname).split(".")[0]
    os.makedirs(out_dir, exist_ok=True)
    conv(fname, out_dir)

    files = glob.glob(out_dir + "/*.jpg")

    resize_dir = out_dir+"_resize"
    os.makedirs(resize_dir, exist_ok=True)

    for x in files :
        image_crop(x, resize_dir)
        #break

if __name__ == "__main__" :
    conv_and_cut("3.pdf")
    conv_and_cut("4.pdf")
    conv_and_cut("5.pdf")
    conv_and_cut("6.pdf")

필요하신 분은 참고해서 사용하시길 바랍니다.

필요 라이브러리

https://pypi.org/project/pdf2image/
https://github.com/oschwartz10612/poppler-windows/releases/

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다