日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python办公自动化pdf下载_最全总结 | 聊聊 Python 办公自动化之 PDF(上)

發布時間:2023/12/14 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python办公自动化pdf下载_最全总结 | 聊聊 Python 办公自动化之 PDF(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 前言

自動化辦公,非 Python 莫屬!

從本篇文章開始,我們繼續聊聊自動化辦公中另外一個常用系列:PPT

2. 準備一下

Python 操作 PPT 最強大的依賴庫是:python-pptx

所以,在開始操作之前,我們需要在虛擬環境下安裝這個依賴庫

#?安裝依賴

pip3?install?python-pptx

3. PPT 結構

首先,我們需要了解一個 PPT 文檔的頁面結構

一個 PPT 文檔對應一個?Presentation?對象

一個?Presentation?包含多個?Slide?對象,每一個 Slide 代表一個幻燈片

每一張幻燈片的內容都是由各種形狀?Shape?組成

其次,PPT 中的內容元素都是由各種形狀構成

比如:文字框、圖片、占位符、表格、普通形狀等

通過翻看源碼,發現他們都定義在?MSO_SHAPE_TYPE??類中

最后,我們需要了解一下 PPT 中的?版式模板

使用?Presentation?對象的?屬性方法?slide_layouts?可以獲取內置的?11?種母版樣式

# 使用Presentation獲取PPT內置的11種版式樣式

# 版式索引從0開始

slide_layout = presentation.slide_layouts[slide_style_index]

他們分別是:

Title Slide 標題幻燈片

Title and Content? ? 標題和內容幻燈片

Section Header? ? 節標題幻燈片

Two Content? ? 兩欄內容幻燈片

Comparison? ? 比較幻燈片

Title Only? ? 僅標題的幻燈片

Blank? ? 空白幻燈片

Content with Caption? ? 內容和標題的幻燈片

Picture with Caption? ? 圖片和標題的幻燈片

Title and Vertical Text 標題和豎排內容

Vertical Title and Text 豎排標題和文本

當然,也可以在?Microsoft PPT / WPS 中查看對應母版的樣式

這里補充一下,除了內置的版式樣式,也可以通過占位符 PlaceHolder 去自定義母版,滿足一些特定的場景需求

4.?幻燈片管理

一個 PPT 文件是由一個或多張幻燈片組成

1-1??那如何添加一張一張幻燈片呢?

這里,只需要通過下面?3?個步驟

實例化一個?Presentation 對象

通過內置的版本樣式,新建一個版本樣式 Layout

通過版本樣式 Layout,添加一張幻燈片

def add_slide(presentation, slide_style_index):

"""

在PPT文檔中,以內置的版式添加幻燈片

:param presentation:文檔對象

:param slide_style_index:版式索引

:return:

"""

# PPT版式樣式

# 內置有11種版式樣式

# 0:Title Slide 標題幻燈片

# 1:Title and Content 標題和內容

# 2:Section Header 節標題

# 3:Two Content 兩欄內容

# 4:Comparison 比較

# 5:Title Only 僅標題

# 6:Blank 空白

# 7:Content with Caption 內容和標題

# 8:Picture with Caption 圖片和標題

# 9:Title and Vertical Text 標題和豎排內容

# 10:Vertical Title and Text 豎排標題和文本

slide_layout = presentation.slide_layouts[slide_style_index]

# 通過樣式Layout,新增一張幻燈片

slide = presentation.slides.add_slide(slide_layout)

return slide

# 1.1 新增幻燈片

slide1 = add_slide(self.presentation, 0)

slide2 = add_slide(self.presentation, 1)

slide3 = add_slide(self.presentation, 2)

slide4 = add_slide(self.presentation, 3)

1-2??獲取已有的幻燈片或某一張幻燈片?

Presentation 對象的?slides 屬性?會返回當前 PPT 文檔中所有的幻燈片對象列表

def get_slides(presentation):

"""

獲取所有的幻燈片

:param presentation:

:return:

"""

# 所有幻燈片

slides = presentation.slides

# 幻燈片數目

slide_num = len(slides)

return slides, slide_num

def get_slide(presentation, slide_index):

"""

根據索引,獲取某一個幻燈片

:param presentation:

:param slide_index:頁面索引,從0開始

:return:

"""

slides, slide_num = get_slides(presentation=presentation)

return slides[slide_index]

# 1.2.1 獲取所幻燈片

slides, slide_num = get_slides(self.presentation)

print('現有幻燈片:', slides)

print('幻燈片數目:', slide_num)

# 1.2.2 獲取某一個幻燈片

slide = get_slide(self.presentation, 1)

print(slide.shapes)

1-3??如果需要刪除某一張幻燈片,如何破?

這個也簡單,只需要先獲取目前幻燈片對象,然后使用下面方法移除即可

def del_slide(presentation, slide_index=0):

"""

刪除某一張幻燈片

:param presentation:

:param slide_index: 索引

:return:

"""

# 所有幻燈片的列表

slides = list(presentation.slides._sldIdLst)

# 根據索引,刪除某一張幻燈片

presentation.slides._sldIdLst.remove(slides[slide_index])

# 1.3 根據索引,刪除PPT文檔中某一張幻燈片

# 比如:刪除第4張幻燈片

del_slide(self.presentation, 3)

5. 文字及段落

我們首先需要指定一個幻燈片對象 Slide,它可以是已有的幻燈片,也可以是新建的一張幻燈片

接著,使用幻燈片對象的 slide.shapes?屬性,獲取當前幻燈片中的所有形狀 Shape 組成的隊列

最后利用形狀隊列的下面這個函數添加一個文本框,函數返回值為一個:文本框對象

add_textbox( left , top , width , height )

該函數參數分別為:

left??左邊距

top? 上邊距

width? 文字框寬度

height? 文字框高度

這里需要引出另外一個概念:文字形狀

PS:文字形狀便于在文字框中添加段落和設置樣式,通過「文本框對象」的屬性函數?text_frame 獲取

def insert_textbox(slide, left, top, width, height, unit=Inches):

"""

幻燈片中添加文本框

:param unit: 單元,默認設置為Inches

:param slide: 幻燈片對象

:param left: 左邊距

:param top: 上邊距

:param width: 寬度

:param height: 高度

:return:

"""

# 文本框

textbox = slide.shapes.add_textbox(left=unit(left),

top=unit(top),

width=unit(width),

height=unit(height))

# 文本框形狀

tf = textbox.text_frame

return textbox, tf

為了便于使用,我對幻燈片中插入文字框這一動作進行了一次封裝

長度單位默認設置為:Inches,也可以自定義為厘米等單位

接下來,我們來操作文字框及段落的常見操作

1-1??插入文本框,并設置默認段落內容

插入文本框的同時,文本框形狀對象會自帶一個段落,可以對這個段落設置內容

# 2、往幻燈片中插入一個文本框,返回一個文本框對象和一個文本框形狀對象

textbox, tf = insert_textbox(slide, 8, 2, 10, 4, unit=Cm)

# 2.1 默認的段落

paragraph_default = tf.paragraphs[0]

paragraph_default.text = "設置段落默認的內容"

1-2??文本框中新增一個段落

查看源碼發現,文本框形狀對象是?TextFrame?的子類,因此可以使用?TextFrame?類中的?add_paragraph() 函數添加一個新的段落

# 2.2 添加一個新的段落

paragraph_new = tf.add_paragraph()

# 2.3 給段落設置內容

paragraph_new.text = "歡迎關注公眾號:AirPython\n每周分享 Python 原創技術干貨!"

1-3??設置段落及文字樣式

和 Word 一樣,使用 python-pptx 同樣可以設置 PPT 文檔的段落樣式

其中

對齊方式:對齊方式是針對段落的,只需要指定段落對象的?alignment?的屬性值即可

def set_parg_font_style(paragraph, font_name=None, font_color=None, font_size=-1, font_bold=False, font_italic=False,

paragraph_alignment=PP_ALIGN.CENTER):

"""

設置段落中文本的樣式,包含:字體名稱、顏色、大小、是否加粗、是否斜體

:param paragraph_alignment: 段落對齊方式

:param paragraph:

:param font_name:

:param font_color:

:param font_size:

:param font_bold:

:param font_italic:

:return:

"""

# 對齊方式

# 注意:對齊方式是針對段落的

paragraph.alignment = paragraph_alignment

# 獲取段落中字體對象

font = paragraph.font

# 設置字體樣式

set_font_style(font, font_name, font_color, font_size, font_bold, font_italic)

return font

段落文字屬性:使用段落對象的 font 屬性獲取字體對象,接著設置字體名稱、大小、顏色、是否斜體、加粗

def set_font_style(font, font_name=None, font_color=None, font_size=-1, font_bold=False, font_italic=False):

"""

設置字體樣式

:param font:

:param font_name:

:param font_color:

:param font_size:

:param font_bold:

:param font_italic:

:return:

"""

# 字體名稱

if font_name:

font.name = font_name

# 字體顏色

if font_color and len(font_color) == 3:

font.color.rgb = RGBColor(font_color[0], font_color[1], font_color[2])

# 字體大小

if font_size != -1:

font.size = Pt(font_size)

# 是否加粗,默認不加粗

font.bold = font_bold

# 是否傾斜,默認不傾斜

font.italic = font_italic

1-4??設置文字框的背景顏色

設置文字框背景顏色只需要 2 步

將形狀的填充類型設置為純色

設置文字框的背景顏色

def set_widget_bg(widget, bg_rgb_color=None):

"""

設置【文本框textbox/單元格/形狀】的背景顏色

:param widget:文本框textbox、單元格、形狀

:param bg_rgb_color:背景顏色值

:return:

"""

if bg_rgb_color and len(bg_rgb_color) == 3:

# 1、將形狀填充類型設置為純色

widget.fill.solid()

# 2、設置文本框的背景顏色

widget.fill.fore_color.rgb = RGBColor(bg_rgb_color[0], bg_rgb_color[1], bg_rgb_color[2])

# 4、設置文字框的背景顏色

set_widget_bg(textbox, [0, 255, 0])

需要指出的是,該方法同樣適用于設置表格單元格、普通形狀的背景顏色

1-5?文本框的自動對齊

一旦文本框設置一段很長的文字,單行可能顯示不完全

這時候,我們只需要設置文字形狀的?word_wrap?值為 True,則可以讓文本框的文字自動換行顯示

# 5、設置文本框的文字自動對齊

tf.word_wrap = True

6. 最后

受限于篇幅,本篇文章僅聊到了 PPT 的結構、幻燈片管理、段落及文字;更多復雜操作、項目實戰,會在后面的文章中進行說明

要獲取全部源碼,關注公眾號「?AirPython?」,后臺回復「?ppt?」即可獲得全部源碼

如果你覺得文章還不錯,請大家?點贊、分享、留言下,因為這將是我持續輸出更多優質文章的最強動力!

推薦閱讀

總結

以上是生活随笔為你收集整理的python办公自动化pdf下载_最全总结 | 聊聊 Python 办公自动化之 PDF(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。