On m'a fait remarquer que certaines polices sont incorrectes dans la revue de document PowerPoint. Vérifiez et corrigez une par une les polices différentes sur les diapositives de 100 pages ou plus. Je ne voulais pas le faire par inspection visuelle et je me demandais si je pouvais le faire efficacement car je pourrais faire le même travail à l'avenir.
python-pptx Il n'y a plus rien que vous ne puissiez faire avec python de nos jours! Après quelques recherches, j'ai trouvé que python-pptx peut fonctionner avec des fichiers PowerPoint de python. Page officielle: python-pptx
J'ai abordé un peu la mise en route officielle, en me référant aux articles des grands pionniers de Qiita. D'une manière ou d'une autre, j'ai une image, donc je vais la vider ci-dessous. (Si vous faites une erreur, veuillez la signaler ...)
Presentation > slides[] > shapes[] > text_frame.paragraphs[] > runs[]
la diapositive a les objets de cette diapositive dans des formes [] sous la forme d'un tableau.
Parmi les formes, celles qui peuvent avoir des caractères (?) Peuvent avoir text_frame. Paragraphs []. J'obtiens souvent une erreur en essayant d'accéder avec des formes [n]. Paragraphs [m] ...
Je peux changer la police de chaque caractère, mais je me suis toujours demandé comment je l'avais. Il semble qu'il ait une unité appelée run, et vous pouvez définir la police pour chacun.
Videz tous les paragraphes et exécutions de toutes les diapositives dans csv. Définissez TARGET_FILE_PATH sur le chemin d'accès au fichier PowerPoint cible et OUTPUT_FILE_PATH sur le chemin d'accès au fichier csv de sortie.
python-pptx.py
from pptx import Presentation
from pptx.util import Pt
import csv
TARGET_FILE_PATH = './targetFile/targetFile.pptx'
OUTPUT_FILE_PATH = './output.csv'
FONT_SIZE_DIVESER = 12700
# ["pptxNom du fichier","numéro de diapositive","numéro d'objet","numéro de série","Type d'objet"," font.name"," font.size"," text"]
def export_slide_fonts_and_text():
outputArray = []
outputArray.append(["pptxNom du fichier","numéro de diapositive","numéro d'objet","numéro de paragraphe","numéro de série","Type d'objet"," font.name"," font.size"," text"])
#Lire le fichier ppt
prs = Presentation(TARGET_FILE_PATH)
slide_number = 0
#Chargement des diapositives
for slide in prs.slides:
shape_number = 0
#Traité par forme
for shape in slide.shapes:
if not shape.has_text_frame:
shape_number = shape_number + 1
continue
paragraph_number = 0
#Sortie une fois au stade du paragraphe
for paragraph in shape.text_frame.paragraphs:
if(paragraph.font.size != None):
fontSize = paragraph.font.size/FONT_SIZE_DIVESER
else:
fontSize = None
outputArray.append([TARGET_FILE_PATH, slide_number, shape_number,paragraph_number, "-","paragraph", str(paragraph.font.name), str(fontSize), paragraph.text])
run_number = 0
#Sortie de chaque exécution
for run in paragraph.runs:
if(run.font.size != None):
fontSize = run.font.size/FONT_SIZE_DIVESER
else:
fontSize = None
outputArray.append([TARGET_FILE_PATH, slide_number, shape_number,paragraph_number, run_number, "run", str(run.font.name), str(fontSize), run.text])
run_number = run_number + 1
paragraph_number = paragraph_number + 1
shape_number = shape_number + 1
slide_number = slide_number +1
#l'écriture
with open(OUTPUT_FILE_PATH, 'w', encoding="shift-jis") as f:
wirter = csv.writer(f, lineterminator='\n', quoting=csv.QUOTE_ALL)
wirter.writerows(outputArray)
if __name__ == "__main__":
export_slide_fonts_and_text()
Ce qui suit est ce qui a été produit par csv, collé sur Excel et coloré. En général, je sens que je peux faire ce que je veux!
ToBe
Comme vous pouvez le voir dans Excel ci-dessus, il existe de nombreux endroits où le nom et la taille de la police sont "Aucun". Si la valeur n'est pas définie, elle fera référence à la valeur par défaut. Je pense que je peux l'obtenir en accédant à l'espace réservé ... Je voudrais enquêter un peu plus.
Je vous remercie…. Un immense merci ...! Résumé python-pptx Rapports automatiques avec python-pptx [Python] Générez des rapports powerpo à une vitesse explosive! Création de rapport automatique à l'aide de Python [PowerPoint] [python-pptx] https://qiita.com/code_440/items/22e8539da465686496d3
Recommended Posts