Ich wurde darauf hingewiesen, dass einige Schriftarten in der PowerPoint-Dokumentüberprüfung falsch sind. Überprüfen und korrigieren Sie nacheinander, welche Schriftarten auf Folien mit 100 Seiten oder mehr unterschiedlich sind. Ich wollte es nicht durch Sichtprüfung machen und fragte mich, ob ich es effizient machen könnte, weil ich in Zukunft vielleicht die gleiche Arbeit machen könnte.
python-pptx Mit Python kann man heutzutage nichts mehr anfangen! Nach einigen Recherchen stellte ich fest, dass python-pptx mit PowerPoint-Dateien aus Python arbeiten kann. Offizielle Seite: python-pptx
Ich habe das offizielle Getting Start ein wenig angesprochen und mich auf die Artikel der großen Pioniere von Qiita bezogen. Irgendwie habe ich ein Bild, also werde ich es unten ablegen. (Wenn Sie einen Fehler machen, weisen Sie bitte darauf hin ...)
Presentation > slides[] > shapes[] > text_frame.paragraphs[] > runs[]
Folie hat die Objekte in dieser Folie in Form [] in Form eines Arrays.
Unter den Formen können diejenigen, die Zeichen (?) Haben können, text_frame.paragraphs [] haben. Beim Versuch, mit Formen [n] .paragraphs [m] zuzugreifen, wird häufig eine Fehlermeldung angezeigt ...
Ich kann die Schriftart für jedes Zeichen ändern, aber ich habe mich immer gefragt, wie ich sie habe. Es scheint, dass es eine Einheit namens run gibt, und Sie können die Schriftart für jede festlegen.
Speichern Sie alle Absätze und Läufe aller Folien in csv. Setzen Sie TARGET_FILE_PATH auf den Pfad zur Powerpoint-Zieldatei und OUTPUT_FILE_PATH auf den Pfad zur CSV-Ausgabedatei.
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
# ["pptxDateiname","Foliennummer","Objektnummer","Laufnummer","Objekttyp"," font.name"," font.size"," text"]
def export_slide_fonts_and_text():
outputArray = []
outputArray.append(["pptxDateiname","Foliennummer","Objektnummer","Absatznummer","Laufnummer","Objekttyp"," font.name"," font.size"," text"])
#Ppt-Datei lesen
prs = Presentation(TARGET_FILE_PATH)
slide_number = 0
#Folien laden
for slide in prs.slides:
shape_number = 0
#Von der Form verarbeitet
for shape in slide.shapes:
if not shape.has_text_frame:
shape_number = shape_number + 1
continue
paragraph_number = 0
#Einmal in der Phase des Absatzes ausgeben
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
#Geben Sie jeden Lauf aus
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
#Schreiben
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()
Das Folgende wurde von csv ausgegeben, in Excel eingefügt und farbig dargestellt. Im Allgemeinen habe ich das Gefühl, dass ich tun kann, was ich tun möchte!
ToBe
Wie Sie oben in Excel sehen können, gibt es viele Stellen, an denen der Schriftname und die Schriftgröße "Keine" sind. Wenn der Wert nicht festgelegt ist, bezieht er sich auf den Standardwert. Ich denke, ich kann es bekommen, indem ich auf den Platzhalter zugreife ... Ich würde gerne etwas mehr untersuchen.
Vielen Dank…. Überwältigender Dank ...! python-pptx-Zusammenfassung Automatische Berichterstellung mit python-pptx [Python] Erzeugt Powerpo mit explosiver Geschwindigkeit! Automatische Berichterstellung mit Python [PowerPoint] [python-pptx] https://qiita.com/code_440/items/22e8539da465686496d3
Recommended Posts