{"id":4442,"date":"2019-12-22T07:37:46","date_gmt":"2019-12-22T06:37:46","guid":{"rendered":"https:\/\/pythonprogramming.altervista.org\/?p=4442"},"modified":"2020-01-01T14:30:49","modified_gmt":"2020-01-01T13:30:49","slug":"python-and-powerpoint-3-0","status":"publish","type":"post","link":"https:\/\/pythonprogramming.altervista.org\/python-and-powerpoint-3-0\/","title":{"rendered":"Python and Powerpoint 3.0"},"content":{"rendered":"<p>I made some changes in the script to create a <strong>powerpoint<\/strong> slides with python (through python-pptx). I think that is more readable (IMO) and so, here it is, with an example that explain itself.<\/p>\n<pre class=\"lang:default decode:true\">from pptx import Presentation\r\nimport os\r\n\r\n\r\nprs = Presentation()\r\nlayout = prs.slide_layouts[1]\r\n\r\n\r\ndef create_slides(filename, content):\r\n    content = content.splitlines()\r\n    for s in content:\r\n        if \"#\" in s:\r\n            tit, cont = s.split(\"#\")\r\n            slide = prs.slides.add_slide(layout)\r\n            slide.shapes.title.text = tit\r\n            slide.placeholders[1].text = cont\r\n        else:\r\n            pass\r\n    prs.save(filename)\r\n    os.startfile(filename)\r\n\r\n\r\ncontent = \"\"\"Python and Powerpoint # You can make great stuffs with Python to manipulate Powerpoint\r\n\r\nPython pptx # You need to install python-pptx first\r\n\r\nCreate a new file # import Presentation from pptx and then create an istance of the class Presentation\r\n\r\nChoose a layout # Powerpoint had different layouts for slides, use prs.layouts[1], it is the most generic\r\n\r\nCreate a new slide # Use the name of the istance (ex: prs) followed by .slides.add_slide(layout), where layout comes from layout = prs.slide_layouts[1], as I said in the previous slide\r\n\r\nTitle # add it with slide.shapes.title.text = \"Some title\"\r\n\r\nsubtitle # add it with slide.placeholders[1].text = \"Some content\"\r\n\"\"\"\r\n\r\nfilename = create_slides(\"Example.pptx\", content)\r\n<\/pre>\n<h2 style=\"text-align: center;\"><a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/powerpoint_explanation.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4460\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/powerpoint_explanation.png\" alt=\"\" width=\"435\" height=\"200\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/powerpoint_explanation.png 435w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/powerpoint_explanation-320x147.png 320w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><\/a><\/h2>\n<h2>Live coding video to make slides in powerpoint with Python<\/h2>\n<p><iframe loading=\"lazy\" title=\"PyPowerpoint 3.0 - make slides in Powepoint with Python\" width=\"747\" height=\"420\" src=\"https:\/\/www.youtube.com\/embed\/amJBGQIRg1w?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p>The slides output:<\/p>\n<p><a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva1_resized.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4443\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva1_resized.jpg\" alt=\"\" width=\"960\" height=\"720\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva1_resized.jpg 960w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva1_resized-320x240.jpg 320w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva1_resized-768x576.jpg 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a> <a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva2_resized.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4444\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva2_resized.jpg\" alt=\"\" width=\"960\" height=\"720\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva2_resized.jpg 960w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva2_resized-320x240.jpg 320w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva2_resized-768x576.jpg 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a> <a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva3_resized.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4445\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva3_resized.jpg\" alt=\"\" width=\"960\" height=\"720\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva3_resized.jpg 960w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva3_resized-320x240.jpg 320w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva3_resized-768x576.jpg 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a> <a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva4_resized.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4446\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva4_resized.jpg\" alt=\"\" width=\"960\" height=\"720\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva4_resized.jpg 960w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva4_resized-320x240.jpg 320w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva4_resized-768x576.jpg 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a> <a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva5_resized.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4447\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva5_resized.jpg\" alt=\"\" width=\"960\" height=\"720\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva5_resized.jpg 960w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva5_resized-320x240.jpg 320w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva5_resized-768x576.jpg 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a> <a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva6_resized.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4448\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva6_resized.jpg\" alt=\"\" width=\"960\" height=\"720\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva6_resized.jpg 960w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva6_resized-320x240.jpg 320w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva6_resized-768x576.jpg 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a> <a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva7_resized.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4449\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva7_resized.jpg\" alt=\"\" width=\"960\" height=\"720\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva7_resized.jpg 960w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva7_resized-320x240.jpg 320w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/Diapositiva7_resized-768x576.jpg 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a><\/p>\n<h2>Adding the same image on each page<\/h2>\n<p>In case you want to make a sort of template for each image, you can add this line to the code above:<\/p>\n<pre class=\"lang:default decode:true \">slide.shapes.add_picture(\"python.png\", 0, 0)<\/pre>\n<h2>The whole code<\/h2>\n<pre class=\"lang:default decode:true\">from pptx import Presentation\r\nimport os\r\n\r\n\r\nprs = Presentation()\r\nlayout = prs.slide_layouts[1]\r\n\r\n\r\ndef create_slides(filename, content):\r\n    content = content.splitlines()\r\n    for s in content:\r\n        if \"#\" in s:\r\n            tit, cont = s.split(\"#\")\r\n            slide = prs.slides.add_slide(layout)\r\n            slide.shapes.title.text = tit\r\n            slide.placeholders[1].text = cont\r\n            slide.shapes.add_picture(\"python.png\", 0, 0)\r\n        else:\r\n            pass\r\n    prs.save(filename)\r\n    os.startfile(filename)\r\n\r\n\r\ncontent = \"\"\"Python and Powerpoint # You can make great stuffs with Python to manipulate Powerpoint\r\n\r\nPython pptx # You need to install python-pptx first\r\n\r\nCreate a new file # import Presentation from pptx and then create an istance of the class Presentation\r\n\r\nChoose a layout # Powerpoint had different layouts for slides, use prs.layouts[1], it is the most generic\r\n\r\nCreate a new slide # Use the name of the istance (ex: prs) followed by .slides.add_slide(layout), where layout comes from layout = prs.slide_layouts[1], as I said in the previous slide\r\n\r\nTitle # add it with slide.shapes.title.text = \"Some title\"\r\n\r\nsubtitle # add it with slide.placeholders[1].text = \"Some content\"\r\n\"\"\"\r\n\r\nfilename = create_slides(\"Example.pptx\", content)\r\n<\/pre>\n<p>the output<\/p>\n<p><a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/pow1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4463\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/pow1.png\" alt=\"\" width=\"484\" height=\"365\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/pow1.png 484w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/12\/pow1-320x241.png 320w\" sizes=\"auto, (max-width: 484px) 100vw, 484px\" \/><\/a><\/p>\n<h2>How to insert in image in a placeholder<\/h2>\n<pre class=\"lang:default decode:true \">from pptx import Presentation\r\nimport os\r\n\r\nprs = Presentation()\r\n\r\nclass MySlide:\r\n    def __init__(self, data):\r\n        self.layout = prs.slide_layouts[data[3]]\r\n        self.slide=prs.slides.add_slide(self.layout)\r\n        self.title=self.slide.shapes.title\r\n        self.title.text=data[0]\r\n        self.subtitle=self.slide.placeholders[1]\r\n        self.subtitle.text=data[1]\r\n        if data[2] != \"\":\r\n        \tself.slide.placeholders[2].insert_picture(data[2])\r\n\r\nslides = [\r\n    [\"USA Weather\",       #data[0]\r\n     \"Subtitle(Bullet)\",\r\n     \"girl.png\",\r\n     3],\r\n    [\"Malaysia Weather\",       #data[0]\r\n     \"Content(Bullet)\",\r\n     \"\",\r\n     3],\r\n    [\"China Weather\",       #data[0]\r\n     \"This is a brown Fox\",\r\n     \"\",\r\n     3]\r\n]\r\n\r\nfor each_slide in slides:\r\n    MySlide(each_slide)\r\n\r\nprs.save(\"stack.pptx\")\r\nos.startfile(\"stack.pptx\")<\/pre>\n<p>&nbsp;<\/p>\n<h4>Python and Powerpoint<\/h4>\r\n\r\n\t<script>\r\nvar title = \"Python and powerpoint\";\r\n\t\tvar links = [\r\n\t\t[\"https:\/\/pythonprogramming.altervista.org\/?p=5719&preview=true\",\"Present with SVG files\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/python-pptx-put-images-in-powerpoint\/\",\"Put images in powerpoint with python-pptx\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/create-a-presentation-with-python-presentations\/\",\"Python-Presentations... without Powerpoint\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/python-to-create-quickly-powepoint-presentation\/\",\"PyPowerpoint 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/python-to-powerpoint-2-0\/\",\"PyPowerpoint 2\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/python-and-powerpoint-3-0\/\",\"PyPowerpoint 3\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/powerpoint-pil-png-animated-gif\/\",\"Create a Gif with Powerpoint and Python\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/inserting-an-image-in-powerpoint-with-python\/\",\"Fit Images in Powerpoint with Python\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/a-program-to-use-powerpoint-with-python\/\", \"Use Powerpoint with Python\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/create-presentations-with-python-pptx\/\",\"Create a Powerpoint with Python\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/simple-presentation-in-pure-python-while-you-learn-tkinter\/\", \"Createa Slides without Powerpoint\"]\r\n\t\t\t\r\n];\r\n<\/script>\r\n<script>\r\n\t\r\nif (typeof next2 != \"undefined\"){let next2 = 0;}\r\n\t\r\nnext2 = 0;\r\n\thtml = \"\";\/\/<b style='color:coral;font-size:1.2em'>Other posts about \" + title + \"<\/b><br>\";\r\nfor (address of links) \r\n{\r\n\r\n\tif (next2 == 1){\r\n\t\thtml += \"<div style='background:coral'>\";\r\n\t\thtml += \"Next link => <a href='\" + address[0] + \"'>\" + address[1] + \"<\/a>\";\r\n\t\thtml += \"<\/div><br>\";\r\n\t\tnext2 = 0;\r\n\t}\r\n\tif (address[0] == document.URL) {\r\n\t\tnext2 = 1;\r\n\t}\r\n}\r\n\r\nif (typeof next != \"undefined\") {let next = 0;}\r\nif (typeof addressStart != \"undefined\") {let addressStart = \"\";}\r\nnext = 0;\r\naddressStart = \"<a href='\";\r\nfor (address of links) {\r\n\tif (next == 1){\r\n\t\thtml += \">>>\" + addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t\tnext = 0;\r\n\t}\r\n\telse if (addressStart + address[0] != document.URL)\r\n\t{\r\n\t\thtml += addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t}\r\n\telse\r\n\t{\r\n\t\tnext = 1;\r\n\t\tnext_address = address[0]\r\n\t\tnext_title = address[1]\r\n\t\thtml += \"<span style='color:gray'>\" + address[1] + \"<\/span><br>\";\r\n\t}\r\n\r\n}\r\n\r\n\thtml += `<span style=\"font-size:8px\">Powered by <a href=\"https:\/\/pythonprogramming.altervista.org\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2673\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png\" alt=\"\" width=\"70\" height=\"25\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png 156w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2-150x56.png 150w\" sizes=\"auto, (max-width: 70px) 100vw, 70px\" \/>pythonprogramming.altervista.org<\/a><\/span>`\r\n\thtml = \"<div style='background:yellow'>\" + html + \"<\/div>\";\r\n\tdocument.write(html)\r\n<\/script>\r\n<br>\r\n\t<!----- pubblicit\u00e0-------- vedi h:\\ads\\codice_di_prima.txt per il codice che era qui --------------------->\r\n<script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\r\n<!-- Altervista-pythonprogramming-336X280 -->\r\n<ins class=\"adsbygoogle\"\r\n     style=\"display:block\"\r\n     data-ad-client=\"ca-pub-4189782812829764\"\r\n     data-ad-slot=\"2548661001\"\r\n     data-ad-format=\"auto\"><\/ins>\r\n<script>\r\n     (adsbygoogle = window.adsbygoogle || []).push({});\r\n<\/script>\r\n\t<!-- fine ad -->\n","protected":false},"excerpt":{"rendered":"From Python to Powerpoint in a snap of fingers\n<a class=\"moretag\" href=\"https:\/\/pythonprogramming.altervista.org\/python-and-powerpoint-3-0\/\"> [...]<\/a>","protected":false},"author":1,"featured_media":4450,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","footnotes":""},"categories":[196],"tags":[],"class_list":["post-4442","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powerpoint"],"avopt_banners_inside_post":true,"avopt_banners_on_page":true,"av_copy_from":"","av_sharing_message":"","av_sharing_allowed":true,"av_sharing_on":{"fb":[],"tw":[]},"av_allow_affiliate_banner":false,"av_allow_affiliate_multi_banner":false,"av_show_affiliation_buy_button":false,"av_post_rating":true,"av_have_post_rating_value":false,"av_is_artificial_intelligence_content":false,"_links":{"self":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/4442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/comments?post=4442"}],"version-history":[{"count":5,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/4442\/revisions"}],"predecessor-version":[{"id":4592,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/4442\/revisions\/4592"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/media\/4450"}],"wp:attachment":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/media?parent=4442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/categories?post=4442"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/tags?post=4442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}