Generate and manipulate Open XML PowerPoint (.pptx) files
Project description
python-pptx-valutico is a Python library for creating and updating PowerPoint (.pptx) files.
Basically, this is https://github.com/scanny/python-pptx, just with support for row / col adding and removing.
A typical use would be generating a customized PowerPoint presentation from database content, downloadable by clicking a link in a web application. Several developers have used it to automate production of presentation-ready engineering status reports based on information held in their work management system. It could also be used for making bulk updates to a library of presentations or simply to automate the production of a slide or two that would be tedious to get right by hand.
More information is available in the python-pptx documentation
_.
Browse examples with screenshots
_ to get a quick idea what you can do with
python-pptx.
.. _python-pptx documentation
:
https://python-pptx.readthedocs.org/en/latest/
.. _examples with screenshots
:
https://python-pptx.readthedocs.org/en/latest/user/quickstart.html
.. :changelog:
Release History
0.6.24.3 (2023-05-18) +++++++++++++++++++
- Fix issue with broken presentation after copy slide
0.6.24.2 (2022-05-16) +++++++++++++++++++
- Expand namespaces in ns.py to allow a wider variety of shapes to be used.
0.6.21 (2021-09-20) +++++++++++++++++++
- Fix #741 _DirPkgReader must implement .contains()
0.6.20 (2021-09-14) +++++++++++++++++++
- Fix #206 accommodate NULL target-references in relationships.
- Fix #223 escape image filename that appears as literal in XML.
- Fix #517 option to display chart categories/values in reverse order.
- Major refactoring of ancient package loading code.
0.6.19 (2021-05-17) +++++++++++++++++++
- Add shapes.add_ole_object(), allowing arbitrary Excel or other binary file to be embedded as a shape on a slide. The OLE object is represented as an icon.
0.6.18.5 (2019-12-18) +++++++++++++++++++
- Removed @property from 'move_slide()' in order to fix some important edge cases.
0.6.18.4 (2019-12-18) +++++++++++++++++++
- Added 'move_slide()' property to presentation in order to allow moving a slide from one index to another.
0.6.18.3 (2019-12-09) +++++++++++++++++++
- Fix for _RowCollection.add() to not remove text by default, in order to keep text_frame and thus styling.
0.6.18.2 (2019-12-09) +++++++++++++++++++
- Added StyleIndex param to _RowCollection.add() in order to avoid always copying the last row.
0.6.18.1 (2019-12-09) +++++++++++++++++++
- Add _RowCollection.add() and .remove()
- Add _Columnollection.add() and .remove()
0.6.18 (2019-05-02) +++++++++++++++++++
-
.text property getters encode line-break as a vertical-tab (VT, '\v', ASCII 11/x0B). This is consistent with PowerPoint's copy/paste behavior and allows like-breaks (soft carriage-return) to be distinguished from paragraph boundary. Previously, a line-break was encoded as a newline ('\n') and was not distinguishable from a paragraph boundary.
.text properties include Shape.text, _Cell.text, TextFrame.text, _Paragraph.text and _Run.text.
-
.text property setters accept vertical-tab character and place a line-break element in that location. All other control characters other than horizontal-tab ('\t') and newline ('\n') in range \x00-\x1F are accepted and escaped with plain-text like "_x001B" for ESC (ASCII 27).
Previously a control character other than tab or newline in an assigned string would trigger an exception related to invalid XML character.
0.6.17 (2018-12-16) +++++++++++++++++++
- Add SlideLayouts.remove() - Delete unused slide-layout
- Add SlideLayout.used_by_slides - Get slides based on this slide-layout
- Add SlideLayouts.index() - Get index of slide-layout in master
- Add SlideLayouts.get_by_name() - Get slide-layout by its str name
0.6.16 (2018-11-09) +++++++++++++++++++
- Feature #395 DataLabels.show_* properties, e.g. .show_percentage
- Feature #453 Chart data tolerates None for labels
0.6.15 (2018-09-24) +++++++++++++++++++
- Fix #436 ValueAxis._cross_xAx fails on c:dateAxis
0.6.14 (2018-09-24) +++++++++++++++++++
- Add _Cell.merge()
- Add _Cell.split()
- Add _Cell.eq()
- Add _Cell.is_merge_origin
- Add _Cell.is_spanned
- Add _Cell.span_height
- Add _Cell.span_width
- Add _Cell.text getter
- Add Table.iter_cells()
- Move pptx.shapes.table module to pptx.table
- Add user documentation 'Working with tables'
0.6.13 (2018-09-10) +++++++++++++++++++
- Add Chart.font
- Fix #293 Can't hide title of single-series Chart
- Fix shape.width value is not type Emu
- Fix add a:defRPr with c:rich (fixes some font inheritance breakage)
0.6.12 (2018-08-11) +++++++++++++++++++
- Add Picture.auto_shape_type
- Remove Python 2.6 testing from build
- Update dependencies to avoid vulnerable Pillow version
- Fix #260, #301, #382, #401
- Add _Paragraph.add_line_break()
- Add Connector.line
0.6.11 (2018-07-25) +++++++++++++++++++
- Add gradient fill.
- Add experimental "turbo-add" option for producing large shape-count slides.
0.6.10 (2018-06-11) +++++++++++++++++++
- Add
shape.shadow
property to autoshape, connector, picture, and group shape, returning aShadowFormat
object. - Add
ShadowFormat
object with read/write (boolean).inherit
property. - Fix #328 add support for 26+ series in a chart
0.6.9 (2018-05-08) ++++++++++++++++++
- Add
Picture.crop_x
setters, allowing picture cropping values to be set, in addition to interrogated. - Add
Slide.background
andSlideMaster.background
, allowing the background fill to be set for an individual slide or for all slides based on a slide master. - Add option
shapes
parameter toShapes.add_group_shape
, allowing a group shape to be formed from a number of existing shapes. - Improve efficiency of
Shapes._next_shape_id
property to improve performance on high shape-count slides.
0.6.8 (2018-04-18) ++++++++++++++++++
- Add
GroupShape
, providing properties specific to a group shape, including itsshapes
property. - Add
GroupShapes
, providing access to shapes contained in a group shape. - Add
SlideShapes.add_group_shape()
, allowing a group shape to be added to a slide. - Add
GroupShapes.add_group_shape()
, allowing a group shape to be added to a group shape, enabling recursive, multi-level groups. - Add support for adding jump-to-named-slide behavior to shape and run hyperlinks.
0.6.7 (2017-10-30) ++++++++++++++++++
- Add
SlideShapes.build_freeform()
, allowing freeform shapes (such as maps) to be specified and added to a slide. - Add support for patterned fills.
- Add
LineFormat.dash_style
to allow interrogation and setting of dashed line styles.
0.6.6 (2017-06-17) ++++++++++++++++++
-
Add
SlideShapes.add_movie()
, allowing video media to be added to a slide. -
fix #190 Accommodate non-conforming part names having '00' index segment.
-
fix #273 Accommodate non-conforming part names having no index segment.
-
fix #277 ASCII/Unicode error on non-ASCII multi-level category names
-
fix #279 BaseShape.id warning appearing on placeholder access.
0.6.5 (2017-03-21) ++++++++++++++++++
-
#267 compensate for non-conforming PowerPoint behavior on c:overlay element
-
compensate for non-conforming (to spec) PowerPoint behavior related to c:dLbl/c:tx that results in "can't save" error when explicit data labels are added to bubbles on a bubble chart.
0.6.4 (2017-03-17) ++++++++++++++++++
- add Chart.chart_title and ChartTitle object
- #263 Use Number type to test for numeric category
0.6.3 (2017-02-28) ++++++++++++++++++
- add DataLabel.font
- add Axis.axis_title
0.6.2 (2017-01-03) ++++++++++++++++++
- add support for NotesSlide (slide notes, aka. notes page)
- add support for arbitrary series ordering in XML
- add Plot.categories providing access to hierarchical categories in an existing chart.
- add support for date axes on category charts, including writing a dateAx element for the category axis when ChartData categories are date or datetime.
BACKWARD INCOMPATIBILITIES:
Some changes were made to the boilerplate XML used to create new charts. This was done to more closely adhere to the settings PowerPoint uses when creating a chart using the UI. This may result in some appearance changes in charts after upgrading. In particular:
- Chart.has_legend now defaults to True for Line charts.
- Plot.vary_by_categories now defaults to False for Line charts.
0.6.1 (2016-10-09) ++++++++++++++++++
- add Connector shape type
0.6.0 (2016-08-18) ++++++++++++++++++
- add XY chart types
- add Bubble chart types
- add Radar chart types
- add Area chart types
- add Doughnut chart types
- add Series.points and Point
- add Point.data_label
- add DataLabel.text_frame
- add DataLabel.position
- add Axis.major_gridlines
- add ChartFormat with .fill and .line
- add Axis.format (fill and line formatting)
- add ValueAxis.crosses and .crosses_at
- add Point.format (fill and line formatting)
- add Slide.slide_id
- add Slides.get() (by slide id)
- add Font.language_id
- support blank (None) data points in created charts
- add Series.marker
- add Point.marker
- add Marker.format, .style, and .size
0.5.8 (2015-11-27) ++++++++++++++++++
- add Shape.click_action (hyperlink on shape)
- fix: #128 Chart cat and ser names not escaped
- fix: #153 shapes.title raises on no title shape
- fix: #170 remove seek(0) from Image.from_file()
0.5.7 (2015-01-17) ++++++++++++++++++
- add PicturePlaceholder with .insert_picture() method
- add TablePlaceholder with .insert_table() method
- add ChartPlaceholder with .insert_chart() method
- add Picture.image property, returning Image object
- add Picture.crop_left, .crop_top, .crop_right, and .crop_bottom
- add Shape.placeholder_format and PlaceholderFormat object
BACKWARD INCOMPATIBILITIES:
Shape.shape_type is now unconditionally MSO_SHAPE_TYPE.PLACEHOLDER
for all
placeholder shapes. Previously, some placeholder shapes reported
MSO_SHAPE_TYPE.AUTO_SHAPE
, MSO_SHAPE_TYPE.CHART
,
MSO_SHAPE_TYPE.PICTURE
, or MSO_SHAPE_TYPE.TABLE
for that property.
0.5.6 (2014-12-06) ++++++++++++++++++
- fix #138 - UnicodeDecodeError in setup.py on Windows 7 Python 3.4
0.5.5 (2014-11-17) ++++++++++++++++++
- feature #51 - add Python 3 support
0.5.4 (2014-11-15) ++++++++++++++++++
- feature #43 - image native size in shapes.add_picture() is now calculated based on DPI attribute in image file, if present, defaulting to 72 dpi.
- feature #113 - Add Paragraph.space_before, Paragraph.space_after, and Paragraph.line_spacing
0.5.3 (2014-11-09) ++++++++++++++++++
- add experimental feature TextFrame.fit_text()
0.5.2 (2014-10-26) ++++++++++++++++++
- fix #127 - Shape.text_frame fails on shape having no txBody
0.5.1 (2014-09-22) ++++++++++++++++++
-
feature #120 - add Shape.rotation
-
feature #97 - add Font.underline
-
issue #117 - add BMP image support
-
issue #95 - add BaseShape.name setter
-
issue #107 - all .text properties should return unicode, not str
-
feature #106 - add .text getters to Shape, TextFrame, and Paragraph
-
Rename Shape.textframe to Shape.text_frame. Shape.textframe property (by that name) is deprecated.
0.5.0 (2014-09-13) ++++++++++++++++++
- Add support for creating and manipulating bar, column, line, and pie charts
- Major refactoring of XML layer (oxml)
- Rationalized graphical object shape access Note backward incompatibilities below
BACKWARD INCOMPATIBILITIES:
A table is no longer treated as a shape. Rather it is a graphical object contained in a GraphicFrame shape, as are Chart and SmartArt objects.
Example::
table = shapes.add_table(...)
# becomes
graphic_frame = shapes.add_table(...)
table = graphic_frame.table
# or
table = shapes.add_table(...).table
As the enclosing shape, the id, name, shape type, position, and size are attributes of the enclosing GraphicFrame object.
The contents of a GraphicFrame shape can be identified using three available properties on a shape: has_table, has_chart, and has_smart_art. The enclosed graphical object is obtained using the properties GraphicFrame.table and GraphicFrame.chart. SmartArt is not yet supported. Accessing one of these properties on a GraphicFrame not containing the corresponding object raises an exception.
0.4.2 (2014-04-29) ++++++++++++++++++
- fix: issue #88 -- raises on supported image file having uppercase extension
- fix: issue #89 -- raises on add_slide() where non-contiguous existing ids
0.4.1 (2014-04-29) ++++++++++++++++++
-
Rename Presentation.slidemasters to Presentation.slide_masters. Presentation.slidemasters property is deprecated.
-
Rename Presentation.slidelayouts to Presentation.slide_layouts. Presentation.slidelayouts property is deprecated.
-
Rename SlideMaster.slidelayouts to SlideMaster.slide_layouts. SlideMaster.slidelayouts property is deprecated.
-
Rename SlideLayout.slidemaster to SlideLayout.slide_master. SlideLayout.slidemaster property is deprecated.
-
Rename Slide.slidelayout to Slide.slide_layout. Slide.slidelayout property is deprecated.
-
Add SlideMaster.shapes to access shapes on slide master.
-
Add SlideMaster.placeholders to access placeholder shapes on slide master.
-
Add _MasterPlaceholder class.
-
Add _LayoutPlaceholder class with position and size inheritable from master placeholder.
-
Add _SlidePlaceholder class with position and size inheritable from layout placeholder.
-
Add Table.left, top, width, and height read/write properties.
-
Add rudimentary GroupShape with left, top, width, and height properties.
-
Add rudimentary Connector with left, top, width, and height properties.
-
Add TextFrame.auto_size property.
-
Add Presentation.slide_width and .slide_height read/write properties.
-
Add LineFormat class providing access to read and change line color and width.
-
Add AutoShape.line
-
Add Picture.line
-
Rationalize enumerations. Note backward incompatibilities below
BACKWARD INCOMPATIBILITIES:
The following enumerations were moved/renamed during the rationalization of enumerations:
pptx.enum.MSO_COLOR_TYPE
-->pptx.enum.dml.MSO_COLOR_TYPE
pptx.enum.MSO_FILL
-->pptx.enum.dml.MSO_FILL
pptx.enum.MSO_THEME_COLOR
-->pptx.enum.dml.MSO_THEME_COLOR
pptx.constants.MSO.ANCHOR_*
-->pptx.enum.text.MSO_ANCHOR.*
pptx.constants.MSO_SHAPE
-->pptx.enum.shapes.MSO_SHAPE
pptx.constants.PP.ALIGN_*
-->pptx.enum.text.PP_ALIGN.*
pptx.constants.MSO.{SHAPE_TYPES}
-->pptx.enum.shapes.MSO_SHAPE_TYPE.*
Documentation for all enumerations is available in the Enumerations section of the User Guide.
0.3.2 (2014-02-07) ++++++++++++++++++
- Hotfix: issue #80 generated presentations fail to load in Keynote and other Apple applications
0.3.1 (2014-01-10) ++++++++++++++++++
- Hotfix: failed to load certain presentations containing images with uppercase extension
0.3.0 (2013-12-12) ++++++++++++++++++
- Add read/write font color property supporting RGB, theme color, and inherit color types
- Add font typeface and italic support
- Add text frame margins and word-wrap
- Add support for external relationships, e.g. linked spreadsheet
- Add hyperlink support for text run in shape and table cell
- Add fill color and brightness for shape and table cell, fill can also be set to transparent (no fill)
- Add read/write position and size properties to shape and picture
- Replace PIL dependency with Pillow
- Restructure modules to better suit size of library
0.2.6 (2013-06-22) ++++++++++++++++++
- Add read/write access to core document properties
- Hotfix to accomodate connector shapes in _AutoShapeType
- Hotfix to allow customXml parts to load when present
0.2.5 (2013-06-11) ++++++++++++++++++
- Add paragraph alignment property (left, right, centered, etc.)
- Add vertical alignment within table cell (top, middle, bottom)
- Add table cell margin properties
- Add table boolean properties: first column (row header), first row (column headings), last row (for e.g. totals row), last column (for e.g. row totals), horizontal banding, and vertical banding.
- Add support for auto shape adjustment values, e.g. change radius of corner rounding on rounded rectangle, position of callout arrow, etc.
0.2.4 (2013-05-16) ++++++++++++++++++
- Add support for auto shapes (e.g. polygons, flowchart symbols, etc.)
0.2.3 (2013-05-05) ++++++++++++++++++
- Add support for table shapes
- Add indentation support to textbox shapes, enabling multi-level bullets on bullet slides.
0.2.2 (2013-03-25) ++++++++++++++++++
- Add support for opening and saving a presentation from/to a file-like object.
- Refactor XML handling to use lxml objectify
0.2.1 (2013-02-25) ++++++++++++++++++
- Add support for Python 2.6
- Add images from a stream (e.g. StringIO) in addition to a path, allowing images retrieved from a database or network resource to be inserted without saving first.
- Expand text methods to accept unicode and UTF-8 encoded 8-bit strings.
- Fix potential install bug triggered by importing
__version__
from package__init__.py
file.
0.2.0 (2013-02-10) ++++++++++++++++++
First non-alpha release with basic capabilities:
- open presentation/template or use built-in default template
- add slide
- set placeholder text (e.g. bullet slides)
- add picture
- add text box
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for python-pptx-valutico-0.6.24.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9462e173867e52bf0c9c319e576d39884934663d3100518e0a3ade0d7264618e |
|
MD5 | 6eb3408c2346bdcfc92909619375d67e |
|
BLAKE2b-256 | 8702441f9a63e3983a28287fc9e10e874d0022d589e8f8887765eaf2fe71be49 |
Hashes for python_pptx_valutico-0.6.24.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e55340cd97f33d288bf7699e13e0cf9ed12823557dacf6e8f49fd808f6817fa |
|
MD5 | 594a8b2080ffa7bb2d996b515fbfcc16 |
|
BLAKE2b-256 | ad3aab4191a720989e80ce7e3a03293ef32d9384477a8dafe28cbfcd1cdbb502 |