当前位置:   article > 正文

python pdf和图片互转_python pdf转图片

python pdf转图片


一、pdf转图片

安装依赖

pip install PyMuPDF==1.18.17
  • 1

实现

import fitz


def pdf2img(pdf_path, img_dir):
    doc = fitz.open(pdf_path)  # 打开pdf
    for page in doc:  # 遍历pdf的每一页

        zoom_x = 2.0  # 设置每页的水平缩放因子
        zoom_y = 2.0  # 设置每页的垂直缩放因子
        mat = fitz.Matrix(zoom_x, zoom_y)
        pix = page.get_pixmap(matrix=mat)
        pix.save(r"{}page-{}.png".format(img_dir, page.number))     # 保存


if __name__ == '__main__':
	
	# pdf路径
    pdf_path = r"./赵季平影视音乐成功因素分析.pdf"
    # 图片保存位置
    img_dir = r"./img/"
	
	# pdf转图片
    pdf2img(pdf_path, img_dir)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

ps:将缩放因子 zoom_x 和 zoom_y 设为 2.0 之后,可以将转换出来的图片大小提高四倍
在这里插入图片描述


二、图片转pdf

方法1(不推荐,需要调用GUI库,体验不好)

安装依赖

pip install PySimpleGUI==4.47.0    
  • 1

实现

import os, fitz
import PySimpleGUI as psg  # for showing a progress bar


def img2pdf(pdf_path, imgdir):
    doc = fitz.open()  # PDF with the pictures
    imglist = os.listdir(imgdir)  # list of them
    imgcount = len(imglist)  # pic count

    for i, f in enumerate(imglist):
        img = fitz.open(os.path.join(imgdir, f))  # open pic as document
        rect = img[0].rect  # pic dimension
        pdfbytes = img.convert_to_pdf()  # make a PDF stream
        img.close()  # no longer needed
        imgPDF = fitz.open("tar_pdf", pdfbytes)  # open stream as PDF
        page = doc.new_page(width=rect.width,  # new page with ...
                            height=rect.height)  # pic dimension
        page.show_pdf_page(rect, imgPDF, 0)  # image fills the page
        psg.OneLineProgressMeter("Import Images",  # show our progress
                                 i + 1, imgcount)

    doc.save(pdf_path)

def clear_dir(imgdir):
    imglist = os.listdir(imgdir)
    for img in imglist:
        img_path = os.path.join(imgdir, img)
        os.remove(img_path)


if __name__ == '__main__':
	# 图片文件夹路径
    img_dir = r"./img/"
    
    # 要生成的pdf路径
    pdf_path = r"./赵季平影视音乐成功因素分析.pdf"
	
	# 图片转pdf
    img2pdf(pdf_path, img_dir)
	
	# 清空图片
    # clear_dir(img_dir)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

ps:其实这个 PyMuPDF 包还有很多功能,具体可以参考官网文档
https://pymupdf.readthedocs.io/en/latest/faq.html#how-to-make-images-from-document-pages


方法2(推荐)

安装依赖

pip install img2pdf
  • 1

实现

import os 
import img2pdf

def img2pdf_(pdf_path, img_dir):
    try:
        with open(pdf_path, 'wb+') as f:
            img_list =[]
            for img_name in os.listdir(img_dir):
                img_path = os.path.join(img_dir, img_name)
                img_list.append(img_path)
            f.write(img2pdf.convert(img_list))
            print(f"pdf保存成功: {pdf_path}")
    except OSError as err:
        print("OS error: {0}".format(err))


def clear_dir(imgdir):
    imglist = os.listdir(imgdir)
    for img in imglist:
        img_path = os.path.join(imgdir, img)
        os.remove(img_path)


if __name__ == '__main__':
    # 图片文件夹路径
    img_dir = r"../mid_img/"

    # 要生成的pdf路径
    pdf_path = r"./测试.pdf"

    # 图片转pdf
    img2pdf_(pdf_path, img_dir)

	# 清空图片
	# clear_dir(img_dir)


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

ps:千万注意 自己的方法名不要和包名重复了,方法名方法的文件名 都不要叫 img2pdf,否则会报错

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/880033
推荐阅读
相关标签
  

闽ICP备14008679号