最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)快速將pdf文件剪切成多個(gè)圖片

 更新時(shí)間:2024年01月31日 14:18:17   作者:搬磚的詩(shī)人Z  
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)快速將pdf文件剪切成多個(gè)圖片,文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下

這里提供一個(gè)打包好的剪切包,window環(huán)境打開即可運(yùn)行

import os
import fitz
import glob
import requests


os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

#剪切pdf為圖片
def CutPdf(pdfPath,savePath,pdfSavePath):
	try:
		doc = fitz.open(pdfPath) #pdf路徑
		for pg in range(doc.pageCount):
			page = doc[pg]
			rotate = int(0)
		    # 每個(gè)尺寸的縮放系數(shù)為2,這將為我們生成分辨率提高四倍的圖像。
			zoom_x = 2.0
			zoom_y = 2.0
			trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
			pm = page.getPixmap(matrix=trans, alpha=False)
			imagePath = savePath + '%s.png' % str(pg + 1)
			pm.writePNG(imagePath) #最終存儲(chǔ)路徑
			newpdfPath = pdfSavePath + '%s.pdf' % str(pg + 1)
			print("剪切一張圖片:" + str(pg + 1))
			frompic2pdf(imagePath,pdfSavePath,newpdfPath)
			print("轉(zhuǎn)換成功一張pdf:" + str(pg + 1))
	except Exception as e:
		print('CutPdf出現(xiàn)異常:' + str(e))

#圖片轉(zhuǎn)pdf
def frompic2pdf(img_path,pdfSavePath, pdf_path):
	# 使用glob讀圖
	for img in sorted(glob.glob(img_path)):
		if not os.path.exists(pdfSavePath):
			 os.makedirs(pdfSavePath)
		
		# 打開空文檔
		doc = fitz.open()
		# 打開指定圖片
		imgdoc = fitz.open(img)
		# 使用圖片創(chuàng)建單頁(yè)的PDF
		pdfbytes = imgdoc.convertToPDF()
		imgpdf = fitz.open("pdf", pdfbytes)
		# 將當(dāng)前頁(yè)寫入文檔
		doc.insertPDF(imgpdf)
		# 保存為指定名稱的PDF文件
		doc.save(pdf_path)
		# 關(guān)閉
		doc.close()


def main():
    pdfUrl = "cards"
    fileList = os.listdir(pdfUrl)
    index = 1
    for item in  fileList:
        print("開始裁剪" + item)
        url = pdfUrl + "/" + item

        foldStr = "images/" + item.split('.')[0]
        url2 = foldStr + "/" + item.split('.')[0]
        foldStr3 = "pdf/" + item.split('.')[0]
        url3 = foldStr3 + "/"
        if not os.path.exists(foldStr):
            os.makedirs(foldStr)

        CutPdf(url,url2,url3)
        print("完成裁剪")
        index+=1

if __name__ == "__main__":
    main()

知識(shí)補(bǔ)充

除了上文的方法,小編還為大家整理了其他Python裁剪pdf文件為圖片的方法,希望對(duì)大家有所幫助

方法一:

剪裁PDF頁(yè)面

在剪裁PDF頁(yè)面之前,我們需要獲取頁(yè)面的尺寸,并計(jì)算剪裁區(qū)域的位置和大小。下面是剪裁PDF頁(yè)面的代碼:

# 獲取頁(yè)面尺寸
page_width = page.mediaBox.getWidth()
page_height = page.mediaBox.getHeight()

# 定義剪裁區(qū)域的位置和大小
x = 100  # 起始點(diǎn)的x坐標(biāo)
y = 100  # 起始點(diǎn)的y坐標(biāo)
width = 200  # 剪裁區(qū)域的寬度
height = 300  # 剪裁區(qū)域的高度

# 剪裁PDF頁(yè)面
page.trimBox.lowerLeft = (x, y)
page.trimBox.upperRight = (x + width, y + height)
page.cropBox.lowerLeft = (x, y)
page.cropBox.upperRight = (x + width, y + height)

代碼解析:

  • 使用mediaBox屬性獲取頁(yè)面的寬度和高度。
  • 定義剪裁區(qū)域的位置和大小,可以根據(jù)實(shí)際需求進(jìn)行調(diào)整。
  • 使用trimBox屬性設(shè)置剪裁后的頁(yè)面的邊界框。
  • 使用cropBox屬性設(shè)置剪裁后的頁(yè)面的裁剪框。

保存剪裁后的圖片

最后,我們需要將剪裁后的頁(yè)面保存為圖片。這可以通過(guò)使用PyPDF2庫(kù)和Pillow庫(kù)來(lái)實(shí)現(xiàn)。下面是保存剪裁后的圖片的代碼:

from PIL import Image

# 將剪裁后的頁(yè)面保存為圖片
with open('output.jpg', 'wb') as image_file:
    page_data = page.extract_xobject().get('/Im0').getData()
    image = Image.open(io.BytesIO(page_data))
    image.save(image_file, 'JPEG')

首先,導(dǎo)入Pillow庫(kù)中的Image模塊,用于處理圖像。

  • 使用extract_xobject()方法從剪裁后的頁(yè)面中提取圖像數(shù)據(jù)。
  • 使用get('/Im0')方法獲取圖像數(shù)據(jù)。
  • 使用getData()方法獲取圖像的二進(jìn)制數(shù)據(jù)。
  • 使用Image.open()方法打開圖像數(shù)據(jù)。
  • 使用save()方法保存圖像數(shù)據(jù)為JPEG格式的圖片。
  • 'output.jpg'為保存的圖片路徑,可以根據(jù)需要修改。

方法二:

python分割pdf

from PyPDF2 import PdfFileReader, PdfFileWriter
 
 
# PDF文件分割
def split_pdf(read_file, out_detail):
    try:
        fp_read_file = open(read_file, 'rb')
        pdf_input = PdfFileReader(fp_read_file)  # 將要分割的PDF內(nèi)容格式話
        page_count = pdf_input.getNumPages()  # 獲取PDF頁(yè)數(shù)
        print(page_count)  # 打印頁(yè)數(shù)
 
        with open(out_detail, 'r',True,'utf-8')as fp:
            # print(fp)
            txt = fp.readlines()
            # print(txt)
            for detail in txt:  # 打開分割標(biāo)準(zhǔn)文件
                # print(type(detail))
                pages, write_file = detail.split()  # 空格分組
               #  write_file, write_ext = os.path.splitext(write_file)  # 用于返回文件名和擴(kuò)展名元組
                pdf_file = r'C:\Users\GZTSALFIEL\Desktop\excel問(wèn)題文件\pdf\\'+f'{write_file}.pdf'
                # liststr=list(map(int, pages.split('-')))
                # print(type(liststr))
                start_page, end_page = list(map(int, pages.split('-')))  # 將字符串?dāng)?shù)組轉(zhuǎn)換成整形數(shù)組
                start_page -= 1
                try:
                    print(f'開始分割{start_page}頁(yè)-{end_page}頁(yè),保存為{pdf_file}......')
                    pdf_output = PdfFileWriter()  # 實(shí)例一個(gè) PDF文件編寫器
                    for i in range(start_page, end_page):
                        pdf_output.addPage(pdf_input.getPage(i))
                    with open(pdf_file, 'wb') as sub_fp:
                        pdf_output.write(sub_fp)
                    print(f'完成分割{start_page}頁(yè)-{end_page}頁(yè),保存為{pdf_file}!')
                except IndexError:
                    print(f'分割頁(yè)數(shù)超過(guò)了PDF的頁(yè)數(shù)')
        # fp.close()
    except Exception as e:
        print(e)
    finally:
        fp_read_file.close()
 
 
 
# def main():
#     fire.Fire(split_pdf)
#
# if __name__ == '__main__':
#     main()
 
split_pdf(r'..\pdfdocement\myfile.pdf', 'consult.txt')

到此這篇關(guān)于Python實(shí)現(xiàn)快速將pdf文件剪切成多個(gè)圖片的文章就介紹到這了,更多相關(guān)Python將pdf剪切圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python幾種繪制時(shí)間線圖的方法

    Python幾種繪制時(shí)間線圖的方法

    這篇文章主要介紹了Python幾種繪制時(shí)間線圖的方法,Matplotlib 作為 Python 家族最為重要的可視化工具,其基本的 API 以及繪制流程還是需要掌握的
    2022-08-08
  • python繪制熱力圖heatmap

    python繪制熱力圖heatmap

    這篇文章主要為大家詳細(xì)介紹了python繪制熱力圖heatmap,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Python中requests庫(kù)的學(xué)習(xí)方法詳解

    Python中requests庫(kù)的學(xué)習(xí)方法詳解

    這篇文章主要為大家詳細(xì)介紹了Python中requests庫(kù)的學(xué)習(xí)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • Python+smtplib庫(kù)實(shí)現(xiàn)郵件發(fā)送功能

    Python+smtplib庫(kù)實(shí)現(xiàn)郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了Python如何通過(guò)smtplib庫(kù)實(shí)現(xiàn)簡(jiǎn)單的郵件發(fā)送功能,文中的示例代碼借鑒一下,有需要的小伙伴可以參考一下
    2025-02-02
  • python3 實(shí)現(xiàn)對(duì)圖片進(jìn)行局部切割的方法

    python3 實(shí)現(xiàn)對(duì)圖片進(jìn)行局部切割的方法

    今天小編就為大家分享一篇python3 實(shí)現(xiàn)對(duì)圖片進(jìn)行局部切割的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • python Django的顯示個(gè)人信息詳解

    python Django的顯示個(gè)人信息詳解

    這篇文章主要介紹了在Python的Django的顯示個(gè)人信息方法,需要的朋友可以參考下,希望能夠給你帶來(lái)幫助
    2021-09-09
  • pycharm配置Qt?Designer工具的圖文教程

    pycharm配置Qt?Designer工具的圖文教程

    本文主要介紹了pycharm配置Qt?Designer工具的圖文教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Python實(shí)現(xiàn)變聲器功能(蘿莉音御姐音)

    Python實(shí)現(xiàn)變聲器功能(蘿莉音御姐音)

    這篇文章主要介紹了Python實(shí)現(xiàn)變聲器功能(蘿莉音御姐音),本文圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python?tkinter?列表框Listbox屬性詳情

    Python?tkinter?列表框Listbox屬性詳情

    這篇文章主要介紹了Python?tkinter?列表框Listbox屬性詳情,列表框控件顯示多行文本,用戶可以選中一行或者多行。所有的文本只能使用一種字體,不能混合使用多種字體
    2022-07-07
  • Python畫圖學(xué)習(xí)入門教程

    Python畫圖學(xué)習(xí)入門教程

    這篇文章主要介紹了Python畫圖的方法,結(jié)合實(shí)例形式分析了Python基本的線性圖、餅狀圖等繪制技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07

最新評(píng)論

巧家县| 绥德县| 河间市| 舒兰市| 理塘县| 申扎县| 新和县| 泗洪县| 安庆市| 普兰店市| 龙泉市| 封丘县| 都昌县| 万安县| 绥化市| 巩留县| 英吉沙县| 昌图县| 洛隆县| 湛江市| 阳高县| 仁怀市| 海安县| 盐池县| 荥阳市| 泽普县| 平湖市| 浪卡子县| 平原县| 屏东县| 巨野县| 华池县| 清原| 松溪县| 山西省| 越西县| 达拉特旗| 茂名市| 永昌县| 黄冈市| 铜川市|