![]() |
Quando si lavora con presentazioni PowerPoint, può essere utile esportare solo alcune slide in formato PDF. Lo script Python che presentiamo oggi permette di fare esattamente questo, con due modalità: inserendo manualmente il range di slide oppure lasciando che il programma identifichi automaticamente dove termina la parte principale della presentazione (prima degli "Annex").
📦 Requisiti
Per eseguire lo script è necessario avere installato:
- Python
- Il modulo
python-pptx:
pip install python-pptx - Il pacchetto
pywin32per interfacciarsi con PowerPoint:
pip install pywin32 - Microsoft PowerPoint installato sul PC (solo Windows).
🐍 Script di conversione da pptx a pdf
import os
import win32com.client
from pptx import Presentation
def getLastSlide(file_path):
prs = Presentation(file_path)
# To get shapes in your slides
slides = [slide for slide in prs.slides]
slide_counter = 0
found = False
for slide in slides:
slide_counter += 1
for shape in slide.shapes:
if shape.has_text_frame:
if shape.text.find("Annex") != -1 or shape.text.find("ANNEX") != -1:
found = True
break
if found:
break
return slide_counter - 1
if __name__ == "__main__":
home_dir = os.path.expanduser("~")
dir_file_pptx = home_dir + "\\Downloads\\"
print("Il file pptx inserito deve risiedere nella cartella " + dir_file_pptx)
print("\n")
nome_file = input("Nome del file pptx (o premi Enter per usare il default test.pptx): ")
if nome_file == "":
nome_file = "test.pptx"
file_pptx = dir_file_pptx + nome_file
print("\nFile da convertire: " + file_pptx)
range_slides = input("\nDigita il range di slides da esportare in PDF (es. 1-10) oppure digita a per identificare "
"automaticamente l'ultima slide: ")
start = end = 0
if range_slides == "a": # recupero automaticamente l'ultima slide cercando la slide con testo "Annex"
end = getLastSlide(file_pptx)
if end <= 0:
range_slides = input("\nNon sono riuscito ad identificare l'ultima slide. Digita il range di slides da "
"esportare in PDF (es. 1-10): ")
else:
range_slides=f"1-{end}"
start = int(range_slides.split("-")[0])
end = int(range_slides.split("-")[1])
print(f"\nConversione in PDF da slide {start} a slide {end}...")
powerpoint = win32com.client.Dispatch("Powerpoint.Application")
powerpoint.Visible = 1
doc = powerpoint.Presentations.Open(file_pptx)
doc.Slides.Range(range(start, end + 1)).copy()
#new pptx with only the slides range copied from doc pptx
outputPresentation = powerpoint.Presentations.Add()
outputPresentation.Application.CommandBars.ExecuteMso("PasteSourceFormatting")
#save new pptx as PDF
pdfname = os.path.splitext(file_pptx)[0] + ".pdf"
outputPresentation.SaveAs(pdfname, 32)
print("Conversione eseguita. File " + pdfname + " salvato correttamente.")
doc.Close()
outputPresentation.Close()
powerpoint.Quit()
os.system('taskkill /F /IM POWERPNT.EXE')
input("\nPremi Enter per uscire...")
🔍 Come funziona lo script
1. Selezione del file
Lo script cerca il file .pptx nella cartella Downloads dell’utente. All’avvio, chiede all’utente di inserire il nome del file PowerPoint da convertire. Se non viene fornito nulla, userà il file test.pptx.
home_dir = os.path.expanduser("~")
dir_file_pptx = home_dir + "\\Downloads\\"
nome_file = input("Nome del file pptx...")
2. Scelta delle slide da esportare
L’utente può:
- Inserire un range (es.
1-10) - Digitare
aper lasciare che lo script identifichi l’ultima slide prima degli "Annex" (utile se il file contiene appendici).
Per fare questo, viene usata la funzione getLastSlide(file_path) che analizza ogni slide cercando la parola “Annex” o “ANNEX” e ritorna l’indice della slide precedente.
if range_slides == "a":
end = getLastSlide(file_pptx)
3. Conversione in PDF
Lo script utilizza COM automation (win32com.client) per interfacciarsi con PowerPoint e creare un nuovo file con solo le slide desiderate.
doc = powerpoint.Presentations.Open(file_pptx)
doc.Slides.Range(range(start, end + 1)).copy()
Successivamente incolla le slide in una nuova presentazione, mantenendo la formattazione originale:
outputPresentation = powerpoint.Presentations.Add()
outputPresentation.Application.CommandBars.ExecuteMso("PasteSourceFormatting")
Infine salva il nuovo file come PDF:
pdfname = os.path.splitext(file_pptx)[0] + ".pdf"
outputPresentation.SaveAs(pdfname, 32)
💡 Perché è utile?
- ✅ Separa la presentazione principale da eventuali allegati ("Annex")
- ✅ Mantiene il layout e la formattazione originali
- ✅ Salva direttamente in PDF pronto da condividere
⚠️ Limitazioni
- Funziona solo su Windows, perché usa l’automazione COM di PowerPoint.
- Non supporta LibreOffice o PowerPoint Online.
- L’identificazione automatica della slide finale cerca solo il testo “Annex”: potrebbe non funzionare in tutte le situazioni.
▶️ Come usare lo script
- Salva lo script in un file, ad esempio
pptx_to_pdf.py - Posiziona il file
.pptxda convertire nella cartellaDownloads - Esegui lo script con:
python pptx_to_pdf.py - Segui le istruzioni nel terminale.
📌 Conclusione
Questo script è un ottimo esempio di automazione Python con applicazioni reali, in grado di semplificare il processo di esportazione di slide da PowerPoint a PDF. È particolarmente utile in contesti lavorativi dove le presentazioni contengono materiali sensibili o lunghi allegati che non devono essere inclusi nella versione finale in PDF.
Follow me #techelopment
Official site: www.techelopment.it
facebook: Techelopment
instagram: @techelopment
X: techelopment
Bluesky: @techelopment
telegram: @techelopment_channel
whatsapp: Techelopment
youtube: @techelopment
