[Python-pptx] Gibt PowerPoint-Schriftinformationen mit Python in CSV aus

Hintergrund

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

Bild des Objekts

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 ...)

Gesamtperspektive aus der Vogelperspektive

Presentation > slides[] > shapes[] > text_frame.paragraphs[] > runs[] スライド4.PNG

Entsprechung zwischen Formen [] und Folie

Folie hat die Objekte in dieser Folie in Form [] in Form eines Arrays. スライド5.PNG

Korrespondenz zwischen text_frame.paragraphs [] und Folien

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 ... スライド6.PNG

Korrespondenz zwischen Läufen [] und Folie

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. スライド7.PNG

Was ich gemacht habe

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()

Verarbeiten Sie die Ausgabe ein wenig

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! image.png

ToBe

Holen Sie sich den Standardwert

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.

Der Pionier, der sich beziehen durfte

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

[Python-pptx] Gibt PowerPoint-Schriftinformationen mit Python in CSV aus
Ausgabe in eine CSV-Datei mit Python
Schreiben Sie mit Python in csv
[Python] Mit Python in eine CSV-Datei schreiben
Ausgabe von Produktinformationen an csv mithilfe der Rakuten-Produktsuch-API [Python]
Geben Sie Farbzeichen mit Python zu hübsch aus
Python-Protokoll mit GAE an die Konsole ausgeben
[Teil1] Scraping mit Python → Organisieren Sie bis zu CSV!
Python> Ausgaben von 1 bis 100, 501 bis 600> Für CSV
Lesen einer CSV-Datei mit Python 2/3
CSV-Ausgabe der Google-Suche mit [Python]! 【Einfach】
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
Lesen Sie JSON mit Python und geben Sie CSV aus
Ich habe versucht, LLVM IR mit Python auszugeben
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
Python-Skript zum Abrufen von Notizinformationen mit REAPER
Prozedur zum Laden von MNIST mit Python und zur Ausgabe an png
So geben Sie die CSV eines mehrzeiligen Headers mit Pandas aus
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
[Python] Ein Memo zum vertikalen Schreiben von CSV mit Pandas
[Python] So schreiben Sie den Tabellenstil mit python-pptx um [python-pptx]
Stellen Sie mit Python eine Verbindung zu BigQuery her
Lesen Sie CSV mit Python-Pandas
Probieren Sie die Python-Ausgabe mit Haxe 3.2 aus
Stellen Sie mit Python eine Verbindung zu Wikipedia her
Post to Slack mit Python 3
Schalten Sie Python mit Alternativen auf 2.7 um
Laden Sie die CSV-Datei mit Python herunter
Holen Sie sich Alembic-Informationen mit Python
Versuchen Sie, verschiedene Informationen anzuzeigen, die für das Debuggen mit Python nützlich sind
So geben Sie zusätzliche Informationen aus, wenn Sie Protokolle mit dem Protokollierungsmodul von Python ausgeben
Konvertieren Sie in eine Zeichenfolge, während Sie die Standardausgabe mit dem Python-Unterprozess ausgeben
Extrahieren Sie das Bigquery-Dataset und die Tabellenliste mit Python und geben Sie es in CSV aus
Python: So verwenden Sie Async mit
Link, um mit Python zu beginnen
Machen Sie Apache Log CSV mit Python
Schön dich mit Python zu treffen
Versuchen Sie, Facebook mit Python zu betreiben
So importieren Sie CSV- und TSV-Dateien mit Python in SQLite
Eingabe / Ausgabe mit Python (Python-Lernnotiz ⑤)
Ich möchte den Anfang des nächsten Monats mit Python ausgeben
Geben Sie den Inhalt von ~ .xlsx im Ordner mit Python in HTML aus
Konvertieren Sie die Liste mit Python in DataFrame
Erste Schritte mit Python
[Hinweis] Hallo Weltausgabe mit Python
Unit Test Log Ausgabe mit Python
Was tun mit PYTHON Release?
Behandeln Sie Excel-CSV-Dateien mit Python
[Django] Befehl zum Ausgeben von QuerySet an csv
Generiere Power-Material für das Video "Ich habe versucht, mit XX zu singen" [python-pptx]
So berechnen Sie das Datum mit Python
Lesen und Schreiben von CSV mit Python
Mit Python 3 einfach auf Twitter posten