From 65684d8bca7a4d4bd637b161b4de210105c3e972 Mon Sep 17 00:00:00 2001 From: Andrey Potapov <77686740+andreypotapovaspose@users.noreply.github.com> Date: Mon, 11 Aug 2025 18:31:42 +0600 Subject: [PATCH 01/10] SLIDESDOC-627 Update article text to improve time to read Updated the text in the article "Format PowerPoint Text in Python". --- .../manage-text/text-formatting/_index.md | 255 +++++++++--------- 1 file changed, 128 insertions(+), 127 deletions(-) diff --git a/en/python-net/developer-guide/presentation-content/manage-text/text-formatting/_index.md b/en/python-net/developer-guide/presentation-content/manage-text/text-formatting/_index.md index ea39df461..c8df50abb 100644 --- a/en/python-net/developer-guide/presentation-content/manage-text/text-formatting/_index.md +++ b/en/python-net/developer-guide/presentation-content/manage-text/text-formatting/_index.md @@ -31,17 +31,16 @@ description: "Learn how to format and style text in PowerPoint and OpenDocument --- ## **Highlight Text** -New HighlightText method has been added to ITextFrame interface and TextFrame class. -It allows to highlight text part with background color using text sample, similar to Text Highlight Color tool in PowerPoint 2019. +The `highlight_text` method in the [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/) class allows you to highlight a part of the text with a background color using a text sample, similar to the Text Highlight Color tool in PowerPoint 2019. -The code snippet below shows how to use this feature: +The following code snippet shows how to use this feature: ```py import aspose.slides as slides import aspose.pydrawing as draw -with slides.Presentation(path + "SomePresentation.pptx") as presentation: +with slides.Presentation("SomePresentation.pptx") as presentation: presentation.slides[0].shapes[0].text_frame.highlight_text("title", draw.Color.light_blue) opts = slides.TextHighlightingOptions() @@ -51,18 +50,9 @@ with slides.Presentation(path + "SomePresentation.pptx") as presentation: presentation.save("SomePresentation-out2.pptx", slides.export.SaveFormat.PPTX) ``` -{{% alert color="primary" %}} - -Aspose provides a simple, [free online PowerPoint editing service](https://products.aspose.app/slides/editor). - -{{% /alert %}} - - -## **Highlight Text using Regular Expression** -New HighlightRegex method has been added to ITextFrame interface and TextFrame class. - -It allows to highlight text part with background color using regex, similar to Text Highlight Color tool in PowerPoint 2019. +## **Highlight Text Using Regular Expressions** +The `highlight_regex` method of the [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/) class lets you highlight a portion of text with a background color using a regular expression, similar to the Text Highlight Color tool in PowerPoint 2019. The code snippet below shows how to use this feature: @@ -70,19 +60,16 @@ The code snippet below shows how to use this feature: import aspose.slides as slides import aspose.pydrawing as draw -with slides.Presentation(path + "SomePresentation.pptx") as presentation: +with slides.Presentation("SomePresentation.pptx") as presentation: options = slides.TextHighlightingOptions() presentation.slides[0].shapes[0].text_frame.highlight_regex("\\b[^\s]{5,}\\b", draw.Color.blue, options) presentation.save("SomePresentation-out3.pptx", slides.export.SaveFormat.PPTX) ``` - ## **Set Text Background Color** -Aspose.Slides allows you to specify your preferred color for the background of a text. - -This Python code shows you how to set the background color for an entire text: +Aspose.Slides allows you to specify your preferred background color for text. The Python code below shows how to set the background color for the entire text: ```python import aspose.slides as slides @@ -118,7 +105,7 @@ with slides.Presentation("text.pptx") as pres: pres.save("text-red.pptx", slides.export.SaveFormat.PPTX) ``` -This Python code shows you how to set the background color for only a portion of a text: +This Python code shows how to set the background color for only a portion of the text: ```python import aspose.slides as slides @@ -157,24 +144,24 @@ with slides.Presentation("text.pptx") as pres: pres.save("text-red.pptx", slides.export.SaveFormat.PPTX) ``` - ## **Align Text Paragraphs** -Text formatting is one of the key elements while creating any kind of documents or presentations. We know that Aspose.Slides for Python via .NET supports adding text to slides but in this topic, we will see that how can we control the alignment of the text paragraphs in a slide. Please follow the steps below to align text paragraphs using Aspose.Slides for Python via .NET : -1. Create an instance of [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. -2. Obtain the reference of a slide by using its Index. -3. Access the Placeholder shapes present in the slide and typecast them as a AutoShape. -4. Get the Paragraph (that needs to be aligned) from the TextFrame exposed by AutoShape. -5. Align the Paragraph. A paragraph can be aligned to Right, Left, Center & Justify. -6. Write the modified presentation as a PPTX file. +Text formatting is a key element when creating documents or presentations. Aspose.Slides for Python via .NET supports adding text to slides; in this section, we’ll see how to control paragraph alignment in a slide. Follow these steps to align text paragraphs using Aspose.Slides for Python via .NET: + +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. +1. Get a reference to a slide by its index. +1. Access the placeholder shapes on the slide and cast them to [AutoShape](https://reference.aspose.com/slides/python-net/aspose.slides/autoshape/). +1. From the [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/) exposed by the [AutoShape](https://reference.aspose.com/slides/python-net/aspose.slides/autoshape/), get the paragraph that needs to be aligned. +1. Align the paragraph. A paragraph can be aligned `LEFT`, `RIGHT`, `CENTER`, `JUSTIFY`, `JUSTIFY_LOW`, or `DISTRIBUTED`. +1. Save the modified presentation as a PPTX file. -The implementation of the above steps is given below. +The implementation of these steps is shown below. ```py import aspose.slides as slides # Instantiate a Presentation object that represents a PPTX file -with slides.Presentation(path + "ParagraphsAlignment.pptx") as presentation: +with slides.Presentation("ParagraphsAlignment.pptx") as presentation: # Accessing first slide slide = presentation.slides[0] @@ -198,22 +185,22 @@ with slides.Presentation(path + "ParagraphsAlignment.pptx") as presentation: presentation.save("Centeralign_out.pptx", slides.export.SaveFormat.PPTX) ``` +## **Set Text Transparency** -## **Set Transparency for Text** -This article demonstrates how to set transparency property to any text shape using Aspose.Slides for Python via .NET. In order to set the transparency to text. Please follow the steps below: +This section demonstrates how to set the transparency property for any text shape using Aspose.Slides for Python via .NET. To set text transparency, follow these steps: -1. Create an instance of [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. -2. Get the reference of a slide. -3. Set shadow color -4. Write the presentation as a PPTX file. +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. +1. Get a reference to a slide. +1. Set the shadow color. +1. Save the presentation as a PPTX file. -The implementation of the above steps is given below. +The implementation of these steps is given below. ```py import aspose.slides as slides import aspose.pydrawing as draw -with slides.Presentation(path + "transparency.pptx") as pres: +with slides.Presentation("transparency.pptx") as pres: shape = pres.slides[0].shapes[0] effects = shape.text_frame.paragraphs[0].portions[0].portion_format.effect_format @@ -227,12 +214,11 @@ with slides.Presentation(path + "transparency.pptx") as pres: pres.save("transparency-2.pptx", slides.export.SaveFormat.PPTX) ``` +## **Set Text Character Spacing** -## **Set Character Spacing for Text** - -Aspose.Slides allows you to set the space between letters in a textbox. This way, you get to adjust the visual density of a line or block of text by expanding or condensing the spacing between characters. +Aspose.Slides lets you adjust the spacing between letters in a text box. This allows you to control the visual density of a line or block of text by expanding or condensing the spacing between characters. -This Python code shows you how to expand the spacing for one line of text and condense the spacing for another line: +The Python example below shows how to expand the spacing for one line of text and condense it for another: ```python import aspose.slides as slides @@ -248,30 +234,32 @@ with slides.Presentation("in.pptx") as pres: pres.save("out.pptx", slides.export.SaveFormat.PPTX) ``` +## **Manage Paragraph Font Properties** -## **Manage Paragraph's Font Properties** -Presentations usually contain both text and images. The text can be formatted in a various ways, either to highlight specific sections and words, or to conform with corporate styles. Text formatting helps users vary the look and feel of the presentation content. This article shows how to use Aspose.Slides for Python via .NET to configure the font properties of paragraphs of text on slides. To manage font properties of a paragraph using Aspose.Slides for Python via .NET : +Presentations usually contain both text and images. The text can be formatted in various ways—either to highlight specific sections and words or to conform to corporate styles. Text formatting helps users change the look and feel of the presentation content. + +This section demonstrates how to use Aspose.Slides for Python via .NET to configure the font properties of paragraphs in slide text. To manage a paragraph’s font properties using Aspose.Slides for Python via .NET: 1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. -1. Obtain a slide's reference by using its index. -1. Access the Placeholder shapes in the slide and typecast them to AutoShape. -1. Get the Paragraph from the TextFrame exposed by AutoShape. +1. Get a reference to a slide by using its index. +1. Access the placeholder shapes on the slide and cast them to [AutoShape](https://reference.aspose.com/slides/python-net/aspose.slides/autoshape/). +1. Get the paragraph from the [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/) exposed by [AutoShape](https://reference.aspose.com/slides/python-net/aspose.slides/autoshape/). 1. Justify the paragraph. -1. Access a Paragraph's text Portion. -1. Define the font using FontData and set the Font of the text Portion accordingly. +1. Access the paragraph’s text portion. +1. Define the font using [FontData](https://reference.aspose.com/slides/python-net/aspose.slides/fontdata/) and set the font of the text portion accordingly. 1. Set the font to bold. 1. Set the font to italic. -1. Set the font color using the FillFormat exposed by the Portion object. -1. Write the modified presentation to a [PPTX](https://docs.fileformat.com/presentation/pptx/) file. +1. Set the font color using the [FillFormat](https://reference.aspose.com/slides/python-net/aspose.slides/fillformat/) exposed by the [Portion](https://reference.aspose.com/slides/python-net/aspose.slides/portion/) object. +1. Save the modified presentation as a PPTX file. -The implementation of the above steps is given below. It takes an unadorned presentation and formats the fonts on one of the slides. +The implementation of the above steps is shown below. It takes a plain presentation and applies font formatting to one of the slides. ```py import aspose.slides as slides import aspose.pydrawing as draw # Instantiate a Presentation object that represents a PPTX file -with slides.Presentation(path + "FontProperties.pptx") as pres: +with slides.Presentation("FontProperties.pptx") as pres: # Accessing a slide using its slide position slide = pres.slides[0] @@ -313,22 +301,24 @@ with slides.Presentation(path + "FontProperties.pptx") as pres: pres.save("WelcomeFont_out.pptx", slides.export.SaveFormat.PPTX) ``` +## **Manage the Font Family of Text** + +[Portion](https://reference.aspose.com/slides/python-net/aspose.slides/portion/) objects are used to hold text with a similar formatting style within a paragraph. This section demonstrates how to use Aspose.Slides for Python to create a text box, add text to it, and then define a specific font along with various other font family properties. -## **Manage Font Family of Text** -A Portion is used to hold text with similar formatting style in a paragraph. This article shows how to use Aspose.Slides for Python to create a textbox with some text and then define a particular font, and various other properties of the font family category. To create a textbox and set font properties of the text in it:: +To create a text box and set the font properties of the text inside it: 1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. -2. Obtain the reference of a slide by using its index. -3. Add an AutoShape of the type Rectangle to the slide. -4. Remove the fill style associated with the AutoShape. -5. Access the AutoShape's TextFrame. -6. Add some text to the TextFrame. -7. Access the Portion object associated with the TextFrame. -8. Define the font to be used for the Portion. -9. Set other font properties like bold, italic, underline, color and height using the relevant properties as exposed by the Portion object. -10. Write the modified presentation as a PPTX file. - -The implementation of the above steps is given below. +1. Get a reference to a slide by its index. +1. Add an [AutoShape](https://reference.aspose.com/slides/python-net/aspose.slides/autoshape/) of type `RECTANGLE` to the slide. +1. Remove the fill style associated with the [AutoShape](https://reference.aspose.com/slides/python-net/aspose.slides/autoshape/). +1. Access the AutoShape’s [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/). +1. Add text to the [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/). +1. Access the [Portion](https://reference.aspose.com/slides/python-net/aspose.slides/portion/) object associated with the [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/). +1. Define the font to be used for the [Portion](https://reference.aspose.com/slides/python-net/aspose.slides/portion/). +1. Set other font properties such as bold, italic, underline, color, and height using the relevant properties exposed by the [Portion](https://reference.aspose.com/slides/python-net/aspose.slides/portion/) object. +1. Save the modified presentation as a PPTX file. + +The implementation of the above steps is shown below. ```py import aspose.slides as slides @@ -376,11 +366,11 @@ with slides.Presentation() as presentation: ``` -## **Set Font Size for Text** +## **Set the Font Size for Text** -Aspose.Slides allows you to choose your preferred font size for existing text in a paragraph and other texts that may be added to the paragraph later. +Aspose.Slides allows you to set your preferred font size for existing text in a paragraph, as well as for any text that may be added to the paragraph later. -This Python code shows you how to set the font size for texts contained in a paragraph: +This Python example demonstrates how to set the font size for text contained in a paragraph: ```python import aspose.slides as slides @@ -405,16 +395,18 @@ with slides.Presentation("pres.pptx") as presentation: ``` - ## **Set Text Rotation** -Aspose.Slides for Python via .NET allows developers to rotate the text. Text could be set to appear as Horizontal, Vertical, Vertical270, WordArtVertical, EastAsianVertical, MongolianVertical or WordArtVerticalRightToLeft. To rotate the text of any TextFrame, please follow the steps below: -1. Create an instance of [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. -2. Access the first slide. -3. Add any Shape to the slide. -4. Access the TextFrame. -5. Rotate the text. -6. Save file to disk. +Aspose.Slides for Python via .NET allows developers to rotate text. Text can be set to appear as `HORIZONTAL`, `VERTICAL`, `VERTICAL270`, `WORD_ART_VERTICAL`, `EAST_ASIAN_VERTICAL`, `MONGOLIAN_VERTICAL`, or `WORD_ART_VERTICAL_RIGHT_TO_LEFT`. + +To rotate the text in any [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/), follow these steps: + +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. +1. Access the first slide. +1. Add a shape to the slide. +1. Access the [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/). +1. Apply the desired text rotation. +1. Save the file to disk. ```py import aspose.slides as slides @@ -449,16 +441,18 @@ with slides.Presentation() as presentation: presentation.save("RotateText_out.pptx", slides.export.SaveFormat.PPTX) ``` +## **Set a Custom Rotation Angle for a TextFrame** -## **Set Custom Rotation Angle for TextFrame** -Aspose.Slides for Python via .NET now supports, Setting custom rotation angle for textframe. In this topic, we will see with example how to set the RotationAngle property in Aspose.Slides. The new property RotationAngle has been added to IChartTextBlockFormat and ITextFrameFormat interfaces, allows to set the custom rotation angle for textframe. In order to set the RotationAngle property, Please follow the steps below: +Aspose.Slides for Python via .NET supports setting a custom rotation angle for a [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/). In this section, we will demonstrate how to use the `rotation_angle` property in Aspose.Slides. -1. Create an instance of [Presentation ](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/)class. -2. Add a chart on slide. -3. Set RotationAngle property. -4. Write the presentation as a PPTX file. +To set the `rotation_angle` property, follow these steps: -In the example given below, we set the RotationAngle property. +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. +1. Add a chart to the slide. +1. Set the `rotation_angle` property. +1. Save the presentation as a PPTX file. + +In the example below, we set the `rotation_angle` property. ```py import aspose.slides as slides @@ -479,33 +473,33 @@ with slides.Presentation() as presentation: presentation.save("textframe-rotation_out.pptx", slides.export.SaveFormat.PPTX) ``` +## **Set the Line Spacing of Paragraphs** -## **Line Spacing of Paragraph** -Aspose.Slides provides properties under `paragraph_format`—`space_after`, `space_before` and `space_within`—that allow you to manage the line spacing for a paragraph. The three properties are used this way: +Aspose.Slides provides the `space_after`, `space_before`, and `space_within` properties under the [ParagraphFormat](https://reference.aspose.com/slides/python-net/aspose.slides/paragraphformat/) class to control a paragraph’s line spacing. These properties work as follows: -* To specify the line spacing for a paragraph in percentage, use a positive value. -* To specify the line spacing for a paragraph in points, use a negative value. +* To specify line spacing as a percentage, use a positive value. +* To specify line spacing in points, use a negative value. -For example, you can apply a 16pt line spacing for a paragraph by setting the `space_before` property to -16. +For example, to apply a 16 pt line spacing before a paragraph, set the `space_before` property to `-16`. -This is how you specify the line spacing for a specific paragraph: +Here’s how to set the line spacing for a specific paragraph: -1. Load a presentation containing an AutoShape with some text in it. -2. Get a slide's reference through its index. -3. Access the TextFrame. -4. Access the Paragraph. -5. Set the Paragraph properties. -6. Save the presentation. +1. Load a presentation that contains an [AutoShape](https://reference.aspose.com/slides/python-net/aspose.slides/autoshape/) with text. +1. Get a reference to the slide by its index. +1. Access the [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/). +1. Access the [Paragraph](https://reference.aspose.com/slides/python-net/aspose.slides/paragraph/). +1. Set the desired paragraph properties. +1. Save the presentation. -This Python code shows you how to specify the line spacing for a paragraph: +The following Python example demonstrates how to set the line spacing for a paragraph: ```py import aspose.slides as slides # Create an instance of Presentation class -with slides.Presentation(path + "Fonts.pptx") as presentation: +with slides.Presentation("Fonts.pptx") as presentation: - # Obtain a slide's reference by its index + # Get a slide's reference by its index sld = presentation.slides[0] # Access the TextFrame @@ -522,16 +516,23 @@ with slides.Presentation(path + "Fonts.pptx") as presentation: presentation.save("LineSpacing_out.pptx", slides.export.SaveFormat.PPTX) ``` - ## **Set the AutofitType Property for TextFrame** -In this topic, we will explore the different formatting properties of text frame. This article covers how to Set the AutofitType property of text frame, anchor of text and rotating the text in presentation. Aspose.Slides for Python via .NET allows developers to set AutofitType property of any text frame. AutofitType could be set to Normal or Shape. If set to Normal then shape will remain the same whereas the text will be adjusted without causing the shape to change itself whereas If AutofitType is set to shape, then shape will be modified such that only required text is contained in it. To set the AutofitType property of a text frame, please follow the steps below: -1. Create an instance of [Presentation ](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/)class. -2. Access the first slide. -3. Add any shape to the slide. -4. Access the TextFrame. -5. Set the AutofitType of the TextFrame. -6. Save file to disk. +In this section, we will explore various formatting properties of a [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/), including how to set its `autofit_type`, adjust the text anchor, and rotate text in a presentation. + +Aspose.Slides for Python via .NET allows developers to set the `autofit_type` property of any [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/). The `autofit_type` can be set to either `NORMAL` or `SHAPE`: + +* If set to `NORMAL`, the shape remains unchanged while the text is adjusted to fit within it. +* If set to `SHAPE`, the shape is resized so that it contains only the required text. + +To set the `autofit_type` property of a [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/), follow these steps: + +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. +1. Access the first slide. +1. Add a shape to the slide. +1. Access the [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/). +1. Set the `autofit_type` for the [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/). +1. Save the file to disk. ```py import aspose.slides as slides @@ -567,16 +568,18 @@ with slides.Presentation() as presentation: presentation.save("formatText_out.pptx", slides.export.SaveFormat.PPTX) ``` +## **Set the Anchor of a TextFrame** + +Aspose.Slides for Python via .NET allows developers to set the anchor position of any [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/). The [TextAnchorType](https://reference.aspose.com/slides/python-net/aspose.slides/textanchortype/) property specifies where the text is placed within the shape. It can be set to `TOP`, `CENTER`, `BOTTOM`, `JUSTIFIED`, or `DISTRIBUTED`. -## **Set Anchor of TextFrame** -Aspose.Slides for Python via .NET allows developers to Anchor of any TextFrame. TextAnchorType specifies that where is that text placed in the shape. TextAnchorType could be set to Top, Center, Bottom, Justified or Distributed. To set Anchor of any TextFrame, please follow the steps below: +To set the anchor of a [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/), follow these steps: -1. Create an instance of [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. -2. Access the first slide. -3. Add any shape to the slide. -4. Access the TextFrame. -5. Set TextAnchorType of the TextFrame. -6. Save file to disk. +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. +1. Access the first slide. +1. Add a shape to the slide. +1. Access the [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/). +1. Set the [TextAnchorType](https://reference.aspose.com/slides/python-net/aspose.slides/textanchortype/) for the [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/). +1. Save the file to disk. ```py import aspose.slides as slides @@ -611,19 +614,11 @@ with slides.Presentation() as presentation: presentation.save("AnchorText_out.pptx", slides.export.SaveFormat.PPTX) ``` +## **Set the Default Text Style** -## **Set Text Tabulation** -- EffectiveTabs.ExplicitTabCount (2 in our case) property is equal to Tabs.Count. -- EffectiveTabs collection includes all tabs (from Tabs collection and default tabs) -- EffectiveTabs.ExplicitTabCount (2 in our case) property is equal to Tabs.Count. -- EffectiveTabs.DefaultTabSize (294) property shows distance between default tabs (3 and 4 in our example). -- EffectiveTabs.GetTabByIndex(index) with index = 0 will return first explicit tab (Position = 731), index = 1 - second tab (Position = 1241). If you try to get next tab with index = 2 it will return first default tab (Position = 1470) and etc. -- EffectiveTabs.GetTabAfterPosition(pos) used for getting next tabulation after some text. For example you have text: "Helloworld!". To render such text you should know where to start draw "world!". At first, you should calculate length of "Hello" in pixels and call GetTabAfterPosition with this value. You will get next tab position to draw "world!". - - -## **Set Default Text Style** +If you need to apply the same default text formatting to all text elements in a presentation, you can use the `default_text_style` property of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class and set the desired formatting. -If you need to apply the same default text formatting to all text elements of a presentation at once, then you can use the `default_text_style` property from the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class and set the preferred formatting. The code example below shows how to set the default bold font (14 pt) for the text on all slides in a new presentation. +The example below demonstrates how to set the default font to bold, with a size of 14 pt, for all text across every slide in a new presentation. ```py with slides.Presentation() as presentation: @@ -666,3 +661,9 @@ Output: Original text: Hello, Aspose! All-Caps effect: HELLO, ASPOSE! ``` + +{{% alert color="primary" %}} + +Aspose provides a simple, [free online PowerPoint editing service](https://products.aspose.app/slides/editor). + +{{% /alert %}} From 972c57ef92af736b62de0afc1227693a56d6ca7a Mon Sep 17 00:00:00 2001 From: Andrey Potapov <77686740+andreypotapovaspose@users.noreply.github.com> Date: Tue, 12 Aug 2025 19:18:01 +0600 Subject: [PATCH 02/10] SLIDESDOC-627 Update article text to improve time to read Updated text and code examples in two articles. --- .../superscript-and-subscript/_index.md | 87 +++---- .../presentation-slide/clone-slides/_index.md | 242 ++++++++---------- 2 files changed, 153 insertions(+), 176 deletions(-) diff --git a/en/python-net/developer-guide/presentation-content/manage-text/superscript-and-subscript/_index.md b/en/python-net/developer-guide/presentation-content/manage-text/superscript-and-subscript/_index.md index bd890f920..e66204227 100644 --- a/en/python-net/developer-guide/presentation-content/manage-text/superscript-and-subscript/_index.md +++ b/en/python-net/developer-guide/presentation-content/manage-text/superscript-and-subscript/_index.md @@ -17,72 +17,65 @@ keywords: description: "Master superscript and subscript in Aspose.Slides for Python via .NET and elevate your presentations with professional text formatting for maximum impact." --- -## **Manage Super Script and Sub Script Text** -You can add superscript and subscript text inside any paragraph portion. For adding Superscript or Subscript text in Aspose.Slides text frame one must use **the Escapement** properties of PortionFormat class. - -This property returns or sets the superscript or subscript text (value from -100% (subscript) to 100% (superscript). For example : - -- Create an instance of [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. -- Obtain the reference of a slide by using its Index. -- Add an IAutoShape of Rectangle type to the slide. -- Access the ITextFrame associated with the IAutoShape. -- Clear existing Paragraphs -- Create a new paragraph object for holding superscript text and add it to the IParagraphs collection of the ITextFrame. -- Create a new portion object -- Set Escapement property for the portion between 0 to 100 for adding superscript. (0 mean no superscript) -- Set some text for Portion and then add that in portion collection of paragraph. -- Create a new paragraph object for holding subscript text and add it to the IParagraphs collection of the ITextFrame. -- Create a new portion object -- Set Escapement property for portion between 0 to -100 for adding superscript. (0 mean no subscript) -- Set some text for Portion and then add that in portion collection of paragraph. -- Save the presentation as a PPTX file. - -The implementation of the above steps is given below. +You can add superscript and subscript text to any paragraph portion. In Aspose.Slides, use the `escapement` property of the [PortionFormat](https://reference.aspose.com/slides/python-net/aspose.slides/portionformat/) class to control this. + +`escapement` is a percentage from **-100% to 100%**: + +- **> 0** → superscript (e.g., 25% = slight raise; 100% = full superscript) +- **0** → baseline (no super/subscript) +- **< 0** → subscript (e.g., -25% = slight lower; -100% = full subscript) + +Steps: + +1. Create a [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) and get a slide. +1. Add a rectangle [AutoShape](https://reference.aspose.com/slides/python-net/aspose.slides/autoshape/) and access its [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/). +1. Clear existing paragraphs. +1. For superscript: create a paragraph and a portion, set `portion.portion_format.escapement` to a value between **0 and 100**, set text, and add the portion. +1. For subscript: create another paragraph and portion, set `escapement` to a value between **-100 and 0**, set text, and add the portion. +1. Save the presentation as PPTX. ```py import aspose.slides as slides with slides.Presentation("pres.pptx") as presentation: - # Get slide + # Get a slide. slide = presentation.slides[0] - # Create text box + # Create a text box. shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 200, 100) - textFrame = shape.text_frame - textFrame.paragraphs.clear() + shape.text_frame.paragraphs.clear() - # Create paragraph for superscript text - superPar = slides.Paragraph() + # Create a paragraph for superscript text. + superscript_paragraph = slides.Paragraph() - # Create portion with usual text + # Create a text portion with regular text. portion1 = slides.Portion() portion1.text = "SlideTitle" - superPar.portions.add(portion1) + superscript_paragraph.portions.add(portion1) - # Create portion with superscript text - superPortion = slides.Portion() - superPortion.portion_format.escapement = 30 - superPortion.text = "TM" - superPar.portions.add(superPortion) + # Create a text portion with superscript text. + superscript_portion = slides.Portion() + superscript_portion.portion_format.escapement = 30 + superscript_portion.text = "TM" + superscript_paragraph.portions.add(superscript_portion) - # Create paragraph for subscript text - paragraph2 = slides.Paragraph() + # Create a paragraph for the subscript text. + subscript_paragraph = slides.Paragraph() - # Create portion with usual text + # Create a text portion with regular text. portion2 = slides.Portion() portion2.text = "a" - paragraph2.portions.add(portion2) + subscript_paragraph.portions.add(portion2) - # Create portion with subscript text - subPortion = slides.Portion() - subPortion.portion_format.escapement = -25 - subPortion.text = "i" - paragraph2.portions.add(subPortion) + # Create a text portion with subscript text. + subscript_portion = slides.Portion() + subscript_portion.portion_format.escapement = -25 + subscript_portion.text = "i" + subscript_paragraph.portions.add(subscript_portion) - # Add paragraphs to text box - textFrame.paragraphs.add(superPar) - textFrame.paragraphs.add(paragraph2) + # Add the paragraphs to the text box. + shape.text_frame.paragraphs.add(superscript_paragraph) + shape.text_frame.paragraphs.add(subscript_paragraph) presentation.save("TestOut.pptx", slides.export.SaveFormat.PPTX) ``` - diff --git a/en/python-net/developer-guide/presentation-slide/clone-slides/_index.md b/en/python-net/developer-guide/presentation-slide/clone-slides/_index.md index f4e13cd28..8d0b1d344 100644 --- a/en/python-net/developer-guide/presentation-slide/clone-slides/_index.md +++ b/en/python-net/developer-guide/presentation-slide/clone-slides/_index.md @@ -15,187 +15,171 @@ keywords: description: "Quickly clone or duplicate PowerPoint slides with Aspose.Slides for Python via .NET. Follow our clear code examples and tips to automate PPT creation in seconds, boost productivity, and eliminate manual work." --- -## **Clone Slides in Presentation** -Cloning is the process of making an exact copy or replica of something. Aspose.Slides for Python via .NET also makes it possible to make a copy or clone of any slide and then insert that cloned slide to the current or any other opened presentation. The process of slide cloning creates a new slide that can be modified by developers without changing the original slide. There are several possible ways to clone a slide: +## **Overview** -- Clone at End within a Presentation. -- Clone at Another Position within Presentation. -- Clone at End in another Presentation. -- Clone at Another Position in another Presentation. -- Clone at a specific position in another Presentation. +Cloning is the process of making an exact copy or replica of something. Aspose.Slides for Python via .NET allows you to clone any slide and insert that clone into the current presentation or another open presentation. The cloning process creates a new slide that you can modify without affecting the original. -In Aspose.Slides for Python via .NET, (a collection of [Slide](https://reference.aspose.com/slides/python-net/aspose.slides/islide/) objects) exposed by the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) object provides the [add_clone](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) and [insert_clone](https://reference.aspose.com/slides/python-net/aspose.slides/ishapecollection/) methods to perform the above types of slide cloning -## **Clone at End Within a Presentation** -If you want to clone a slide and then use it within the same presentation file at the end of the existing slides, use the [add_clone](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) method according to the steps listed below: +There are several ways to clone a slide: + +- Clone a slide at the end within the same presentation. +- Clone a slide to a specific position within the same presentation. +- Clone a slide at the end of another presentation. +- Clone a slide to a specific position in another presentation. +- Clone a slide with its master slide into another presentation. + +In Aspose.Slides for Python via .NET, the [slide collection](https://reference.aspose.com/slides/python-net/aspose.slides/slidecollection/) exposed by the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) object provides the `add_clone` and `insert_clone` methods to perform these types of slide cloning. + +## **Clone at the End Within the Same Presentation** + +If you want to clone a slide within the same presentation and append it to the end of the existing slides, use the `add_clone` method. Follow these steps: 1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. -1. Instantiate the [SlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) class by referencing the Slides collection exposed by the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) object. -2. Call the [add_clone](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) method exposed by the [SlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) object and pass the slide to be cloned as a parameter to the [add_clone](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) method. -3. Write the modified presentation file. +1. Get the slide collection from the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) object. +1. Call the `add_clone` method on the [SlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/slidecollection/), passing the slide to be cloned. +1. Save the modified presentation. -In the example given below, we have cloned a slide (lying at the first position – zero index – of the presentation) to the end of the presentation. +In the example below, the first slide (index 0) is cloned and appended to the end of the presentation. ```py import aspose.slides as slides -# Instantiate Presentation class that represents a presentation file -with slides.Presentation(path + "CloneWithinSamePresentationToEnd.pptx") as pres: - # Clone the desired slide to the end of the collection of slides in the same presentation - slds = pres.slides - - slds.add_clone(pres.slides[0]) - - # Write the modified presentation to disk - pres.save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", slides.export.SaveFormat.PPTX) +# Instantiate the Presentation class to represent the presentation file. +with slides.Presentation("CloneWithinSamePresentationToEnd.pptx") as presentation: + # Clone the desired slide to the end of the slide collection in the same presentation. + presentation.slides.add_clone(presentation.slides[0]) + # Save the modified presentation to disk. + presentation.save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", slides.export.SaveFormat.PPTX) ``` +## **Clone to a Specific Position Within the Same Presentation** -## **Clone at Another Position Within Presentation** -If you want to clone a slide and then use it within the same presentation file but at a different position, use the [insert_clone](https://reference.aspose.com/slides/python-net/aspose.slides/ishapecollection/) method: +If you want to clone a slide within the same presentation and place it at a different position, use the `insert_clone` method: 1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. -1. Instantiate the class by referencing the **Slides** collection exposed by the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) object. -1. Call the [insert_clone](https://reference.aspose.com/slides/python-net/aspose.slides/ishapecollection/) method exposed by the [SlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) object and pass the slide to be cloned along with the index for the new position as a parameter to the [insert_clone](https://reference.aspose.com/slides/python-net/aspose.slides/ishapecollection/) method. -1. Write the modified presentation as a PPTX file. +1. Get the slide collection from the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) object. +1. Call the `insert_clone` method on the [SlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/slidecollection/), passing the slide to be cloned and the target index for its new position. +1. Save the modified presentation. -In the example given below, we have cloned a slide (lying at the zero index – position 1 – of the presentation) to index 1 – Position 2 – of the presentation. +In the example below, the slide at index 0 (position 1) is cloned to index 1 (position 2) within the same presentation. ```py import aspose.slides as slides -# Instantiate Presentation class that represents a presentation file -with slides.Presentation(path + "CloneWithInSamePresentation.pptx") as pres: - # Clone the desired slide to the end of the collection of slides in the same presentation - slds = pres.slides - - # Clone the desired slide to the specified index in the same presentation - slds.insert_clone(2, pres.slides[1]) - - # Write the modified presentation to disk - pres.save("Aspose_CloneWithInSamePresentation_out.pptx", slides.export.SaveFormat.PPTX) +# Instantiate the Presentation class to represent the presentation file. +with slides.Presentation("CloneWithInSamePresentation.pptx") as presentation: + # Clone the desired slide to the specified position (index) within the same presentation. + presentation.slides.insert_clone(2, presentation.slides[1]) + # Save the modified presentation to disk. + presentation.save("Aspose_CloneWithInSamePresentation_out.pptx", slides.export.SaveFormat.PPTX) ``` +## **Clone at the End of Another Presentation** -## **Clone at End in Another Presentation** -If you need to clone a slide from one presentation and use it in another presentation file, at the end of the existing slides: +If you need to clone a slide from one presentation and append it to the end of another presentation: -1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class containing the presentation the slide will be cloned from. -1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class containing the destination presentation that the slide will be added to. -1. Instantiate the [SlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) class by referencing the **Slides** collection exposed by the Presentation object of the destination presentation. -1. Call the [add_clone](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) method exposed by the [SlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) object and pass the slide from the source presentation as a parameter to the [add_clone](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) method. -1. Write the modified destination presentation file. +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class for the source presentation (the one that contains the slide to clone). +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class for the destination presentation (where the slide will be added). +1. Get the slide collection from the destination presentation. +1. Call `add_clone` on the destination [SlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/slidecollection/), passing the slide from the source presentation. +1. Save the modified destination presentation. -In the example given below, we have cloned a slide (from the first index of the source presentation) to the end of the destination presentation. +In the example below, the slide at index 0 in the source presentation is cloned to the end of the destination presentation. ```py import aspose.slides as slides -# Instantiate Presentation class to load the source presentation file -with slides.Presentation(path + "CloneAtEndOfAnother.pptx") as srcPres: - # Instantiate Presentation class for destination PPTX (where slide is to be cloned) - with slides.Presentation() as destPres: - # Clone the desired slide from the source presentation to the end of the collection of slides in destination presentation - slds = destPres.slides - slds.add_clone(srcPres.slides[0]) - - # Write the destination presentation to disk - destPres.save("Aspose2_out.pptx", slides.export.SaveFormat.PPTX) +# Instantiate the Presentation class to represent the source presentation file. +with slides.Presentation("CloneAtEndOfAnother.pptx") as source_presentation: + # Instantiate the Presentation class for the destination PPTX (where the slide will be cloned). + with slides.Presentation() as target_presentation: + # Clone the desired slide from the source presentation to the end of the slide collection in the destination presentation. + target_presentation.slides.add_clone(source_presentation.slides[0]) + # Save the destination presentation to disk. + target_presentation.save("Aspose2_out.pptx", slides.export.SaveFormat.PPTX) ``` +## **Clone to a Specific Position in Another Presentation** -## **Clone at Another Position in Another Presentation** -If you need to clone a slide from one presentation and use it in another presentation file, at a specific position: +If you need to clone a slide from one presentation and insert it into another presentation at a specific position: -1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class containing the source presentation the slide will be cloned from. -1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class containing the presentation the slide will be added to. -1. Instantiate the [ISlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) class by referencing the Slides collection exposed by the Presentation object of the destination presentation. -1. Call the [insert_clone](https://reference.aspose.com/slides/python-net/aspose.slides/ishapecollection/) method exposed by the [ISlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) object and pass the slide from the source presentation along with the desired position as a parameter to the [insert_clone](https://reference.aspose.com/slides/python-net/aspose.slides/ishapecollection/) method. -1. Write the modified destination presentation file. +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class for the source presentation (the one containing the slide to clone). +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class for the destination presentation (where the slide will be added). +1. Get the slide collection from the destination presentation. +1. Call the `insert_clone` method on the destination [SlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/slidecollection/), passing the slide from the source presentation and the desired target index. +1. Save the modified destination presentation. -In the example given below, we have cloned a slide (from the zero index of the source presentation) to index 1 (position 2) of the destination presentation. +In the example below, the slide at index 0 in the source presentation is cloned to index 1 (position 2) in the destination presentation. ```py import aspose.slides as slides -# Instantiate Presentation class to load the source presentation file -with slides.Presentation(path + "CloneAtEndOfAnother.pptx") as srcPres: - # Instantiate Presentation class for destination PPTX (where slide is to be cloned) - with slides.Presentation("Aspose2_out.pptx") as destPres: - slds = destPres.slides - slds.insert_clone(2, srcPres.slides[0]) - - # Write the destination presentation to disk - destPres.save("Aspose3_out.pptx", slides.export.SaveFormat.PPTX) +# Instantiate the Presentation class to represent the source presentation file. +with slides.Presentation("CloneAtEndOfAnother.pptx") as source_presentation: + # Instantiate the Presentation class for the destination PPTX (where the slide is to be cloned). + with slides.Presentation("Aspose2_out.pptx") as target_presentation: + # Insert a clone of the first slide from the source at index 2 in the destination presentation. + target_presentation.slides.insert_clone(2, source_presentation.slides[0]) + # Save the destination presentation to disk. + target_presentation.save("Aspose3_out.pptx", slides.export.SaveFormat.PPTX) ``` +## **Clone a Slide with Its Master Slide into Another Presentation** + +If you need to clone a slide **with its master** from one presentation and use it in another, first clone the required master slide from the source presentation into the destination presentation. Then use that destination master when cloning the slide. The method `add_clone(Slide, MasterSlide)` expects a **master slide from the destination presentation**, not from the source. -## **Clone at Specific Position in Another Presentation** -If you need to clone a slide with a master slide from one presentation from and use it in another presentation, you need to clone the desired master slide from source presentation to destination presentation first. Then you need to use that master slide for cloning slide with master slide. The **add_clone(ISlide, IMasterSlide)** expects a master slide from destination presentation rather than from source presentation. In order to clone the slide with a master, please follow the steps below: +To clone a slide with its master, follow these steps: -1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class containing the source presentation the slide will be cloned from. -1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class containing the destination presentation the slide will be cloned to. -1. Access the slide to be cloned along with the master slide. -1. Instantiate the [IMasterSlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/imasterslidecollection/) class by referencing the Masters collection exposed by the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) object of the destination presentation. -1. Call the [add_clone](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) method exposed by the [IMasterSlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/imasterslidecollection/) object and pass the master from the source PPTX to be cloned as a parameter to the [add_clone](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) method. -1. Instantiate the [ISlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) class by setting the reference to the Slides collection exposed by the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) object of the destination presentation. -2. Call the [add_clone](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) method exposed by the [ISlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) object and pass the slide from the source presentation to be cloned and master slide as a parameter to the [add_clone](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) method. -3. Write the modified destination presentation file. +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class for the source presentation (the one containing the slide to clone). +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class for the destination presentation. +1. Access the source slide to be cloned and its master slide. +1. Get the [MasterSlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/masterslidecollection/) from the destination presentation’s master collection. +1. Call `add_clone` on the destination [MasterSlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/masterslidecollection/), passing the source master to clone it into the destination. +1. Get the [SlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/slidecollection/) from the destination presentation’s slide collection. +1. Call `add_clone` on the destination [SlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/slidecollection/), passing the source slide and the cloned destination master. +1. Save the modified destination presentation. -In the example given below, we have cloned a slide with a master (lying at the zero index of the source presentation) to the end of the destination presentation using a master from source slide. +In the example below, the slide at index 0 in the source presentation is cloned to the end of the destination presentation using the master cloned from the source. ```py import aspose.slides as slides -# Instantiate Presentation class to load the source presentation file -with slides.Presentation(path + "CloneToAnotherPresentationWithMaster.pptx") as srcPres: - # Instantiate Presentation class for destination presentation (where slide is to be cloned) - with slides.Presentation() as destPres: - # Instantiate ISlide from the collection of slides in source presentation along with - # Master slide - sourceSlide = srcPres.slides[0] - sourceMaster = sourceSlide.layout_slide.master_slide - - # Clone the desired master slide from the source presentation to the collection of masters in the - # Destination presentation - masters = destPres.masters - destMaster = sourceSlide.layout_slide.master_slide - - # Clone the desired master slide from the source presentation to the collection of masters in the - # Destination presentation - iSlide = masters.add_clone(sourceMaster) - - # Clone the desired slide from the source presentation with the desired master to the end of the - # Collection of slides in the destination presentation - slds = destPres.slides - slds.add_clone(sourceSlide, iSlide, True) - - # Clone the desired master slide from the source presentation to the collection of masters in the # Destination presentation - # save the destination presentation to disk - destPres.save("CloneToAnotherPresentationWithMaster_out.pptx", slides.export.SaveFormat.PPTX) +# Instantiate the Presentation class to represent the source presentation file. +with slides.Presentation("CloneToAnotherPresentationWithMaster.pptx") as source_presentation: + # Instantiate the Presentation class for the destination presentation where the slide will be cloned. + with slides.Presentation() as target_presentation: + # Get the first slide from the source presentation. + source_slide = source_presentation.slides[0] + # Get the master slide used by the first slide. + source_master = source_slide.layout_slide.master_slide + # Clone the master slide into the destination presentation's master collection. + cloned_master = target_presentation.masters.add_clone(source_master) + # Clone the slide from the source presentation to the end of the destination presentation using the cloned master. + target_presentation.slides.add_clone(source_slide, cloned_master, True) + # Save the destination presentation to disk. + target_presentation.save("CloneToAnotherPresentationWithMaster_out.pptx", slides.export.SaveFormat.PPTX) ``` +## **Clone at the End in a Specified Section** +With Aspose.Slides for Python via .NET, you can clone a slide from one section of a presentation and insert it into another section within the same presentation. To do this, use the `add_clone(Slide, Section)` method of the [SlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/slidecollection/) interface. -## Clone at End in Specified Section - -With Aspose.Slides for Python via .NET, you can clone a slide from one section of a presentation and insert that slide into another section in the same presentation. In this case, you have to use the [add_clone](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) method from the [ISlideCollection](https://reference.aspose.com/slides/python-net/aspose.slides/islidecollection/) Interface. - -This Python code shows you how to clone a slide and insert the cloned slide into a specified section: +The following Python example shows how to clone a slide and insert the clone into a specified section: ```py import aspose.slides as slides -with slides.Presentation() as pres: - slide = pres.slides.add_empty_slide(pres.slides[0].layout_slide) - slide.shapes.add_auto_shape(slides.ShapeType.ELLIPSE, 150, 150, 100, 100) # to clone - - slide2 = pres.slides.add_empty_slide(pres.slides[0].layout_slide) - section = pres.sections.add_section("Section2", slide2) - - pres.slides.add_clone(slide, section) - - pres.save("pres.pptx", slides.export.SaveFormat.PPTX) +# Create a new blank presentation. +with slides.Presentation() as presentation: + # Add an empty slide based on the layout of the first slide. + slide = presentation.slides.add_empty_slide(presentation.slides[0].layout_slide) + # Add an ellipse shape to the new slide; this slide will be cloned later. + slide.shapes.add_auto_shape(slides.ShapeType.ELLIPSE, 150, 150, 100, 100) + # Add another empty slide based on the layout of the first slide. + slide2 = presentation.slides.add_empty_slide(presentation.slides[0].layout_slide) + # Create a section named "Section2" that starts at slide2. + section = presentation.sections.add_section("Section2", slide2) + # Clone the previously created slide into the "Section2" section. + presentation.slides.add_clone(slide, section) + # Save the presentation as a PPTX file. + presentation.save("presentation.pptx", slides.export.SaveFormat.PPTX) ``` - - - From 8110dfdb2879b64259761714e845ddc02df80241 Mon Sep 17 00:00:00 2001 From: Andrey Potapov <77686740+andreypotapovaspose@users.noreply.github.com> Date: Wed, 13 Aug 2025 10:55:01 +0600 Subject: [PATCH 03/10] SLIDESDOC-627 Update article text to improve time to read Updated the article "Convert PowerPoint Presentations to Markdown in Python". --- .../convert-powerpoint-to-markdown/_index.md | 94 ++++++++----------- 1 file changed, 41 insertions(+), 53 deletions(-) diff --git a/en/python-net/developer-guide/manage-presentation/convert-presentation/convert-powerpoint/convert-powerpoint-to-markdown/_index.md b/en/python-net/developer-guide/manage-presentation/convert-presentation/convert-powerpoint/convert-powerpoint-to-markdown/_index.md index c655ac5b9..846db7469 100644 --- a/en/python-net/developer-guide/manage-presentation/convert-presentation/convert-powerpoint/convert-powerpoint-to-markdown/_index.md +++ b/en/python-net/developer-guide/manage-presentation/convert-presentation/convert-powerpoint/convert-powerpoint-to-markdown/_index.md @@ -28,92 +28,80 @@ keywords: description: "Convert PowerPoint and OpenDocument slides—PPT, PPTX, ODP—to clean Markdown with Aspose.Slides for Python via .NET, automate documentation and keep formatting." --- -{{% alert color="info" %}} +## **Convert Presentations to Markdown** -Support for PowerPoint to markdown conversion was implemented in [Aspose.Slides 23.7](https://docs.aspose.com/slides/python-net/aspose-slides-for-python-net-23-7-release-notes/). +The example below shows the simplest way to convert a PowerPoint presentation to Markdown using Aspose.Slides for Python via .NET with default settings. -{{% /alert %}} +1. Instantiate a [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) to load the presentation. +1. Call `save` to export it as a Markdown file. -{{% alert color="warning" %}} - -PowerPoint to markdown export is **without images** by default. If you want to export a PowerPoint document containing images, you need to set `saveOptions.export_type = MarkdownExportType.VISUAL` also set the `base_path` where the images referenced in the markdown document will be saved. - -{{% /alert %}} - -## **Convert PowerPoint to Markdown** - -1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class to represent a presentation object. -2. Use the [Save](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/#methods) method to save the object as a markdown file. - -This Python code shows you how to convert PowerPoint to markdown: +Use the Python snippet below to perform the conversion: ```python import aspose.slides as slides -with slides.Presentation("pres.pptx") as pres: - pres.save("pres.md", slides.export.SaveFormat.MD) +with slides.Presentation("presentation.pptx") as presentation: + presentation.save("presentation.md", slides.export.SaveFormat.MD) ``` -## Convert PowerPoint to Markdown Flavor +## **Convert Presentations to Markdown Flavor** -Aspose.Slides allows you to convert PowerPoint to markdown (containing basic syntax), CommonMark, GitHub flavored markdown, Trello, XWiki, GitLab, and 17 other markdown flavors. +Aspose.Slides allows you to convert presentations to Markdown formats, including basic Markdown, CommonMark, GitHub-flavored Markdown, Trello, XWiki, GitLab, and 17 other Markdown flavors. -This Python code shows you how to convert PowerPoint to CommonMark: +The following Python example shows how to convert a PowerPoint presentation to CommonMark: ```python -from aspose.slides import Presentation -from aspose.slides.dom.export.markdown.saveoptions import MarkdownSaveOptions, Flavor -from aspose.slides.export import SaveFormat +import aspose.slides as slides -with Presentation("pres.pptx") as pres: - saveOptions = MarkdownSaveOptions() - saveOptions.flavor = Flavor.COMMONMARK +save_options = slides.export.MarkdownSaveOptions() +save_options.flavor = slides.export.Flavor.COMMON_MARK - pres.save("pres.md", SaveFormat.MD, saveOptions) +with slides.Presentation("presentation.pptx") as presentation: + presentation.save("presentation.md", slides.export.SaveFormat.MD, save_options) ``` -The 23 supported markdown flavors are [listed under the Flavor enumeration](https://reference.aspose.com/slides/python-net/aspose.slides.dom.export.markdown.saveoptions/flavor/) from the [MarkdownSaveOptions](https://reference.aspose.com/slides/python-net/aspose.slides.dom.export.markdown.saveoptions/markdownsaveoptions/) class. +The 23 supported Markdown flavors are listed in the [Flavor](https://reference.aspose.com/slides/python-net/aspose.slides.dom.export.markdown.saveoptions/flavor/) enumeration of the [MarkdownSaveOptions](https://reference.aspose.com/slides/python-net/aspose.slides.dom.export.markdown.saveoptions/markdownsaveoptions/) class. -## **Convert Presentation Containing Images to Markdown** +## **Convert Presentations Containing Images to Markdown** -The [MarkdownSaveOptions](https://reference.aspose.com/slides/python-net/aspose.slides.dom.export.markdown.saveoptions/markdownsaveoptions/) class provides properties and enumerations that allow you to use certain options or settings for the resulting markdown file. The [MarkdownExportType](https://reference.aspose.com/slides/python-net/aspose.slides.dom.export.markdown.saveoptions/markdownexporttype/) enum, for example, can be set to values that determine how images are rendered or handled: `Sequential`, `TextOnly`, `Visual`. +The [MarkdownSaveOptions](https://reference.aspose.com/slides/python-net/aspose.slides.dom.export.markdown.saveoptions/markdownsaveoptions/) class provides properties and enumerations that let you configure the resulting Markdown file. For example, the [MarkdownExportType](https://reference.aspose.com/slides/python-net/aspose.slides.dom.export.markdown.saveoptions/markdownexporttype/) enum controls how images are handled: `SEQUENTIAL`, `TEXT_ONLY`, or `VISUAL`. ### **Convert Images Sequentially** -If you want the images to appear individually one after the other in the resulting markdown, you have to choose the sequential option. This Python code shows you how to convert a presentation containing images to markdown: +If you want images to appear individually—one after another—in the generated Markdown, choose the `SEQUENTIAL` option. The Python example below shows how to convert a presentation with images to Markdown. ```python import aspose.slides as slides -with slides.Presentation("pres.pptx") as pres: - markdownSaveOptions = slides.export.MarkdownSaveOptions() - markdownSaveOptions.show_hidden_slides = True - markdownSaveOptions.show_slide_number = True - markdownSaveOptions.flavor = slides.export.Flavor.GITHUB - markdownSaveOptions.export_type = slides.export.MarkdownExportType.SEQUENTIAL - markdownSaveOptions.new_line_type = slides.export.NewLineType.WINDOWS - - pres.save("doc.md", [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ], slides.export.SaveFormat.MD, markdownSaveOptions) +save_options = slides.export.MarkdownSaveOptions() +save_options.show_hidden_slides = True +save_options.show_slide_number = True +save_options.flavor = slides.export.Flavor.GITHUB +save_options.export_type = slides.export.MarkdownExportType.SEQUENTIAL +save_options.new_line_type = slides.export.NewLineType.WINDOWS + +slide_indices = [1, 3, 5] + +with slides.Presentation("presentation.pptx") as presentation: + presentation.save("presentation.md", slide_indices, slides.export.SaveFormat.MD, save_options) ``` ### **Convert Images Visually** -If you want the images to appear together in the resulting markdown, you have to choose the visual option. In this case, images will be saved to the current directory of the application (and a relative path will be built for them in the markdown document), or you can specify your preferred path and folder name. +If you want the images to appear together in the resulting Markdown, choose the `VISUAL` option. In this mode, images are saved to the application’s current directory (and the Markdown document uses relative paths), or you can specify a custom output path and folder name. -This Python code demonstrates the operation: +The Python example below demonstrates this operation: ```python -from aspose.slides import Presentation -from aspose.slides.dom.export.markdown.saveoptions import MarkdownSaveOptions, MarkdownExportType -from aspose.slides.export import SaveFormat - -with Presentation("pres.pptx") as pres: - outPath = "c:\\documents" +import os +import aspose.slides as slides - saveOptions = MarkdownSaveOptions() - saveOptions.export_type = MarkdownExportType.VISUAL - saveOptions.images_save_folder_name = "md-images" - saveOptions.base_path = outPath +save_options = slides.export.MarkdownSaveOptions() +save_options.export_type = slides.export.MarkdownExportType.VISUAL +save_options.images_save_folder_name = "md-images" +save_options.base_path = "c:\\documents" - pres.save(outPath + "\\pres.md", SaveFormat.MD, saveOptions) +with slides.Presentation("presentation.pptx") as presentation: + file_path = os.path.join(save_options.base_path, "presentation.md") + presentation.save(file_path, slides.export.SaveFormat.MD, save_options) ``` From 497a8728395de9981fb423c2aa83f830c03c4255 Mon Sep 17 00:00:00 2001 From: Andrey Potapov <77686740+andreypotapovaspose@users.noreply.github.com> Date: Wed, 13 Aug 2025 12:43:34 +0600 Subject: [PATCH 04/10] SLIDESDOC-627 Update article text to improve time to read Updated the article "Convert PowerPoint Slides to PNG in Python". --- .../convert-powerpoint-to-png/_index.md | 68 +++++++++---------- 1 file changed, 32 insertions(+), 36 deletions(-) diff --git a/en/python-net/developer-guide/manage-presentation/convert-presentation/convert-powerpoint/convert-powerpoint-to-png/_index.md b/en/python-net/developer-guide/manage-presentation/convert-presentation/convert-powerpoint/convert-powerpoint-to-png/_index.md index ca2e7b843..69167d36d 100644 --- a/en/python-net/developer-guide/manage-presentation/convert-presentation/convert-powerpoint/convert-powerpoint-to-png/_index.md +++ b/en/python-net/developer-guide/manage-presentation/convert-presentation/convert-powerpoint/convert-powerpoint-to-png/_index.md @@ -22,72 +22,68 @@ keywords: description: "Convert PowerPoint and OpenDocument presentations to high-quality PNG images quickly with Aspose.Slides for Python via .NET, ensuring precise, automated results." --- -## **About PowerPoint to PNG Conversion** +## **Overview** -The PNG (Portable Network Graphics) format is not as popular as JPEG (Joint Photographic Experts Group), but it still very popular. +Aspose.Slides for Python via .NET makes it straightforward to convert PowerPoint presentations to PNG. You load a presentation, iterate through its slides, render each one to a raster image, and save the result as PNG files. This is ideal for generating slide previews, embedding slides in web pages, or producing static assets for downstream processing. -**Use case:** When you have a complex image and size is not an issue, PNG is a better image format than JPEG. +## **Convert Slides to PNG** -{{% alert title="Tip" color="primary" %}} You may want to check out Aspose free **PowerPoint to PNG Converters**: [PPTX to PNG](https://products.aspose.app/slides/conversion/pptx-to-png) and [PPT to PNG](https://products.aspose.app/slides/conversion/ppt-to-png). They are a live implementation of the process described on this page. {{% /alert %}} - -## **Convert PowerPoint to PNG** +This section shows the simplest possible example of converting a PowerPoint presentation to PNG images using Aspose.Slides for Python via .NET. Go through these steps: 1. Instantiate the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. -2. Get the slide object from the [Presentation.Slides](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) collection under the [ISlide](https://reference.aspose.com/slides/python-net/aspose.slides/islide/) interface. -3. Use a [ISlide.GetImage](https://reference.aspose.com/slides/python-net/aspose.slides/islide/) method to get the thumbnail for each slide. -4. Use the [IPresentation.SaveMethod(String, SaveFormat, ISaveOptions](https://reference.aspose.com/slides/python-net/aspose.slides/ipresentation/) method to save the slide thumbnail to the PNG format. +1. Get a slide from the `Presentation.slides` collection (see the [Slide](https://reference.aspose.com/slides/python-net/aspose.slides/slide/) class). +1. Use the `Slide.get_image` method to generate a thumbnail of the slide. +1. Use the `Presentation.save` method to save the slide thumbnail in PNG format. -This Python code shows you how to convert a PowerPoint presentation to PNG: +This Python code shows how to convert a PowerPoint presentation to PNG: ```py import aspose.slides as slides -pres = slides.Presentation("pres.pptx") - -for index in range(pres.slides.length): - slide = pres.slides[index] - with slide.get_image() as image: - image.save("slide_{i}.png".format(i = index), slides.ImageFormat.PNG) +with slides.Presentation("presentation.pptx") as presentation: + for index, slide in enumerate(presentation.slides): + with slide.get_image() as image: + image.save(f"slide_{index}.png", slides.ImageFormat.PNG) ``` -## **Convert PowerPoint to PNG With Custom Dimensions** +## **Convert Slides to PNG with Custom Dimensions** -If you want to obtain PNG files around a certain scale, you can set the values for `desiredX` and `desiredY`, which determine the dimensions of the resulting thumbnail. +To export slides to PNG at a custom scale, call `Slide.get_image` with horizontal and vertical scale factors. These multipliers resize the output relative to the slide’s original dimensions—for example, `2.0` doubles both width and height. Use equal values for `scale_x` and `scale_y` to preserve the aspect ratio. -This code in Python demonstrates the described operation: +This Python code demonstrates the described operation: ```py import aspose.slides as slides -pres = slides.Presentation("pres.pptx") +scale_x = 2 +scale_y = scale_x -scaleX = 2 -scaleY = 2 -for index in range(pres.slides.length): - slide = pres.slides[index] - with slide.get_image(scaleX, scaleY) as image: - image.save("slide_{index}.png".format(index=index), slides.ImageFormat.PNG) +with slides.Presentation("presentation.pptx") as presentation: + for index, slide in enumerate(presentation.slides): + with slide.get_image(scale_x, scale_y) as image: + image.save(f"slide_{index}.png", slides.ImageFormat.PNG) ``` -## **Convert PowerPoint to PNG With Custom Size** - -If you want to obtain PNG files around a certain size, you can pass your preferred `width` and `height` arguments for `ImageSize`. +## **Convert Slides to PNG with Custom Size** -This code shows you how to convert a PowerPoint to PNG while specifying the size for the images: +If you want to generate PNG files at a specific size, pass your desired `width` and `height` values. The code below shows how to convert a PowerPoint to PNG while specifying the image size: ```py import aspose.slides as slides import aspose.pydrawing as drawing -pres = slides.Presentation(path + "pres.pptx") - size = drawing.Size(960, 720) -for index in range(pres.slides.length): - slide = pres.slides[index] - with slide.get_image(size) as image: - image.save("slide_{index}.png".format(index=index), slides.ImageFormat.PNG) +with slides.Presentation("presentation.pptx") as presentation: + for index, slide in enumerate(presentation.slides): + with slide.get_image(size) as image: + image.save(f"slide_{index}.png", slides.ImageFormat.PNG) ``` +{{% alert title="Tip" color="primary" %}} + +You may want to try Aspose’s free **PowerPoint-to-PNG converters**—[PPTX to PNG](https://products.aspose.app/slides/conversion/pptx-to-png) and [PPT to PNG](https://products.aspose.app/slides/conversion/ppt-to-png). They provide a live implementation of the process described on this page. + +{{% /alert %}} From 710a69c465ed011c9abe5370566ee7f3e117feff Mon Sep 17 00:00:00 2001 From: Andrey Potapov <77686740+andreypotapovaspose@users.noreply.github.com> Date: Wed, 13 Aug 2025 13:16:01 +0600 Subject: [PATCH 05/10] SLIDESDOC-627 Update article text to improve time to read Updated the article "Enhance PowerPoint Presentations with Animations in Python". --- .../powerpoint-animation/_index.md | 67 ++++++++++++------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/en/python-net/developer-guide/powerpoint-animation/_index.md b/en/python-net/developer-guide/powerpoint-animation/_index.md index 5b8a5fdc8..f84508cec 100644 --- a/en/python-net/developer-guide/powerpoint-animation/_index.md +++ b/en/python-net/developer-guide/powerpoint-animation/_index.md @@ -29,22 +29,26 @@ keywords: description: "Explore the capabilities of Aspose.Slides for Python via .NET in handling PowerPoint animations. This general overview highlights key features and offers insights to enhance your presentations." --- -Since presentations are meant to present something, their visual appearance and interactive behavior is always considered while creating them. +## **Overview** -**PowerPoint animation** plays an important role in order to make presentation eye-catching and attractive for the viewers. Aspose.Slides for Python via .NET offers a wide range of options to add animation to PowerPoint presentation: +Presentations are designed to convey information, so their visual appearance and interactive behavior are key considerations during creation. -- apply various types of PowerPoint animation effects on shapes, charts, tables, OLE Objects and other presentation elements. -- use multiple PowerPoint animation effects on a shape. -- use animation timeline to control animation effects. -- create custom animation. +**PowerPoint animation** plays an important role in making a presentation eye-catching and engaging for viewers. Aspose.Slides for Python via .NET provides a wide range of options to add animation to a PowerPoint presentation. You can: -In Aspose.Slides for Python via .NET, various animations effects can be applied on the shapes. As every element on the slide including text, pictures, OLE Object, table etc is considered as a shape, it means we can apply animation effect on every element of a slide. +- Apply various animation effects to shapes, charts, tables, OLE objects, and other elements. +- Use multiple animation effects on a single shape. +- Control effects through the animation timeline. +- Create custom animations. + +In Aspose.Slides for Python via .NET, animation effects can be applied to shapes. Because every element on a slide—including text, pictures, OLE objects, and tables—is treated as a shape, you can apply animation effects to any element on the slide. + +The [aspose.slides.animation](https://reference.aspose.com/slides/python-net/aspose.slides.animation/) namespace provides the classes for working with PowerPoint animations. -[**Aspose.Slides.Animation**](https://reference.aspose.com/slides/python-net/aspose.slides.animation/) **namespace** provides classes to work with PowerPoint animations. ## **Animation Effects** -Aspose.Slides supports **150+ animation effects**, including basic animation effects like Bounce, PathFootball, Zoom effect and specific animation effects as OLEObjectShow, OLEObjectOpen. You can find a full listing of animation effects in [**EffectType** ](https://reference.aspose.com/slides/python-net/aspose.slides.animation/effecttype/)enumeration. -Additionally, these animation effects can be used in combination with them: +Aspose.Slides supports **150+ animation effects**, including basic effects such as Bounce, PathFootball, and Zoom, as well as specialized effects like OLEObjectShow and OLEObjectOpen. You can find the full list in the [EffectType](https://reference.aspose.com/slides/python-net/aspose.slides.animation/effecttype/) enumeration. + +Additionally, these animation effects can be combined with the following effects: - [ColorEffect](https://reference.aspose.com/slides/python-net/aspose.slides.animation/coloreffect/) - [CommandEffect](https://reference.aspose.com/slides/python-net/aspose.slides.animation/commandeffect/) @@ -54,36 +58,51 @@ Additionally, these animation effects can be used in combination with them: - [RotationEffect](https://reference.aspose.com/slides/python-net/aspose.slides.animation/rotationeffect) - [ScaleEffect](https://reference.aspose.com/slides/python-net/aspose.slides.animation/scaleeffect/) - [SetEffect](https://reference.aspose.com/slides/python-net/aspose.slides.animation/seteffect/) + ## **Custom Animation** -It is possible to create your own **custom animations** in Aspose.Slides. -This can be achieved if you combine several behaviours together into a new custom animation. -[**Behaviour**](https://reference.aspose.com/slides/python-net/aspose.slides.animation/behavior/) is a building unit of any PowerPoint animation effect. All animation effects are actually a set of behaviours composed into one strategy. You can combine behaviours into a custom animation once and reuse it in other presentations. If you add a new behaviour into a standard PowerPoint animation effect - it will be another custom animation. For example, you can add repeat behaviour to an animation to make it repeat a few times. +You can create your own **custom animations** in Aspose.Slides by combining multiple behaviors into a single effect. + +[Behavior](https://reference.aspose.com/slides/python-net/aspose.slides.animation/behavior/) is the basic building block of any PowerPoint animation effect. Every animation effect is essentially a set of behaviors arranged into one strategy or timeline. You can assemble behaviors into a custom animation once and reuse it across other presentations. If you add a new behavior to a standard PowerPoint animation effect, it becomes a custom animation—for example, adding a repeat behavior to make the animation play several times. + +[Animation Point](https://reference.aspose.com/slides/python-net/aspose.slides.animation/point/) marks the moment or position at which a behavior is applied (a keyframe). -[**Animation Point**](https://reference.aspose.com/slides/python-net/aspose.slides.animation/point/) is a point where behaviour should be applied. ## **Animation Time Line** -[**Sequence**](https://reference.aspose.com/slides/python-net/aspose.slides.animation/sequence/) is a collection of animation effects, applied on a concrete shape. -[**Timeline**](https://reference.aspose.com/slides/python-net/aspose.slides.animation/animationtimeline/) is a set of Sequences used in a concrete slide. It is an animation engine represented since PowerPoint 2002. In previous Powerpoint versions, it was challenging to add animation effects to presentation, which could be achieved only with different workarounds. Timeline comes to replace on old AnimationSettings class and provide more clear object model for PowerPoint animation. One slide can have only one animation timeline. +[Sequence](https://reference.aspose.com/slides/python-net/aspose.slides.animation/sequence/) is a collection of animation effects applied to a specific shape. + +[Timeline](https://reference.aspose.com/slides/python-net/aspose.slides.animation/animationtimeline/) is the set of sequences used on a specific slide. It was introduced in PowerPoint 2002. In earlier versions of PowerPoint, adding animation effects was difficult and often required workarounds. Timeline replaces the old `AnimationSettings` class and provides a clearer object model for PowerPoint animation. Each slide can have only one animation timeline. + ## **Interactive Animation** -[**Trigger**](https://reference.aspose.com/slides/python-net/aspose.slides.animation/effecttriggertype/) allows to define user actions (e.g. button click), that will make a certain animation start. Triggers have been added into the latest PowerPoint version only. + +[Trigger](https://reference.aspose.com/slides/python-net/aspose.slides.animation/effecttriggertype/) allows you to define user actions (e.g., a button click) that start a specific animation. Triggers were added only in the latest versions of PowerPoint. + ## **Shape Animation** -Aspose.Slides allows to apply animation to shapes, that can be actually text, rectangle, line, frame, OLE Object, etc. -{{% alert color="primary" %}} +Aspose.Slides lets you apply animations to shapes—such as text, rectangles, lines, frames, OLE objects, and more. + +{{% alert color="primary" %}} + Read more [**About Shape Animation**](/slides/python-net/shape-animation/). + {{% /alert %}} ## **Animated Charts** -To create animated charts, you should use all the same classes as for the shapes. However, it is possible to use PowerPoint animation only on chart categories or chart series. You can also apply animation effect to a category element or series element. -{{% alert color="primary" %}} +To create animated charts, use the same classes as you do for shapes. However, PowerPoint animations can be applied only to chart categories or chart series. You can also apply an animation effect to an individual category element or series element. + +{{% alert color="primary" %}} + Read more [**About Animated Charts**](/slides/python-net/animated-charts/). + {{% /alert %}} ## **Animated text** -Except animated text, it is also possible to apply animation to a paragraph. -{{% alert color="primary" %}} +In addition to animating text, you can apply animation to a paragraph. + +{{% alert color="primary" %}} + Read more [**About Animated Text**](/slides/python-net/animated-text/). -{{% /alert %}} \ No newline at end of file + +{{% /alert %}} From 2e4bef0cccbf8f45bdcc3dbbb358833a48f8699e Mon Sep 17 00:00:00 2001 From: Andrey Potapov <77686740+andreypotapovaspose@users.noreply.github.com> Date: Thu, 14 Aug 2025 18:27:46 +0600 Subject: [PATCH 06/10] SLIDESDOC-627 Update article text to improve time to read Updated the article "Manage Shapes in Presentations Using Python". --- .../shape-manipulations/_index.md | 329 ++++++++---------- 1 file changed, 153 insertions(+), 176 deletions(-) diff --git a/en/python-net/developer-guide/presentation-content/powerpoint-shapes/shape-manipulations/_index.md b/en/python-net/developer-guide/presentation-content/powerpoint-shapes/shape-manipulations/_index.md index ead88f105..c651ef507 100644 --- a/en/python-net/developer-guide/presentation-content/powerpoint-shapes/shape-manipulations/_index.md +++ b/en/python-net/developer-guide/presentation-content/powerpoint-shapes/shape-manipulations/_index.md @@ -27,275 +27,252 @@ keywords: description: "Learn to create, edit and optimize shapes in Aspose.Slides for Python via .NET and deliver high-performance PowerPoint and OpenDocument presentations." --- -## **Find Shape in Slide** -This topic will describe a simple technique to make it easier for developers to find a specific shape on a slide without using its internal Id. It is important to know that PowerPoint Presentation files do not have any way to identify shapes on a slide except an internal unique Id. It seems to be difficult for developers to find a shape using its internal unique Id. All shapes added to the slides have some Alt Text. We suggest developers to use alternative text for finding a specific shape. You can use MS PowerPoint to define the alternative text for objects which you are planning to change in the future. +## **Overview** -After setting the alternative text of any desired shape, you can then open that presentation using Aspose.Slides for Python via .NET and iterate through all shapes added to a slide. During each iteration, you can check the alternative text of the shape and the shape with the matching alternative text would be the shape required by you. To demonstrate this technique in a better way, we have created a method, [FindShape](https://reference.aspose.com/slides/python-net/aspose.slides.util/slideutil/) that does the trick to find a specific shape in a slide and then simply returns that shape. +This guide introduces shape manipulation in Aspose.Slides for Python via .NET. Learn practical patterns for finding shapes (including by Alternative Text), duplicating, deleting or hiding, reordering, aligning and flipping, reading IDs and layout-driven formatting, and exporting individual shapes to SVG using the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) and [Shape](https://reference.aspose.com/slides/python-net/aspose.slides/shape/) APIs. + +## **Find Shapes on Slides** + +PowerPoint identifies shapes only by internal IDs. Assign a unique Alt Text to the target shape in PowerPoint, then open the presentation with Aspose.Slides for Python, iterate over slide shapes, and select the one whose Alt Text matches. The `find_shape` method implements this approach and returns the matching shape. ```py import aspose.slides as slides -# Method implementation to find a shape in a slide using its alternative text -def find_shape(slide, alttext): - for i in range(len(slide.shapes)): - if slide.shapes[i].alternative_text == alttext: - return slide.shapes[i] +# Finds a shape on a slide by its alternative text. +def find_shape(slide, alt_text): + for slide_shape in slide.shapes: + if slide_shape.alternative_text == alt_text: + return slide_shape return None - -# Instantiate a Presentation class that represents the presentation file -with slides.Presentation(path + "FindingShapeInSlide.pptx") as p: - slide = p.slides[0] - # Alternative text of the shape to be found + + +# Instantiate the Presentation class that represents a presentation file. +with slides.Presentation("sample.pptx") as presentation: + slide = presentation.slides[0] + # Find the shape with Alt Text "Shape1". shape = find_shape(slide, "Shape1") - if shape != None: - print("Shape Name: " + shape.name) + if shape is not None: + print("Shape name:", shape.name) ``` +## **Clone Shapes** +To clone shapes from a source slide to a new slide in Aspose.Slides, follow these steps: -## **Clone Shape** -To clone a shape to a slide using Aspose.Slides for Python via .NET: +1. Create a [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) from the source file. +1. Get the source slide by index and its shapes collection. +1. Retrieve a blank layout from the master slide. +1. Add an empty slide using that layout and get its shapes. +1. Clone shapes into the target slide. +1. Save the presentation as PPTX. -1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. -1. Obtain the reference of a slide by using its index. -1. Access the source slide shape collection. -1. Add new slide to the presentation. -1. Clone shapes from the source slide shape collection to the new slide. -1. Save the modified presentation as a PPTX file. - -The example below adds a group shape to a slide. +The following code example clones shapes from one slide to another. ```py import aspose.slides as slides -# Instantiate Presentation class -with slides.Presentation(path + "Source Frame.pptx") as srcPres: - sourceShapes = srcPres.slides[0].shapes - blankLayout = srcPres.masters[0].layout_slides.get_by_type(slides.SlideLayoutType.BLANK) - destSlide = srcPres.slides.add_empty_slide(blankLayout) - destShapes = destSlide.shapes - destShapes.add_clone(sourceShapes[1], 50, 150 + sourceShapes[0].height) - destShapes.add_clone(sourceShapes[2]) - destShapes.insert_clone(0, sourceShapes[0], 50, 150) - - # Write the PPTX file to disk - srcPres.save("CloneShape_out.pptx", slides.export.SaveFormat.PPTX) -``` +# Instantiate the Presentation class. +with slides.Presentation("sample.pptx") as presentation: + source_shapes = presentation.slides[0].shapes + blank_layout = presentation.masters[0].layout_slides.get_by_type(slides.SlideLayoutType.BLANK) + target_slide = presentation.slides.add_empty_slide(blank_layout) + target_shapes = target_slide.shapes + + target_shapes.add_clone(source_shapes[1], 50, 150 + source_shapes[0].height) + target_shapes.add_clone(source_shapes[2]) + target_shapes.insert_clone(0, source_shapes[0], 50, 150) + # Save the presentation to disk. + presentation.save("output.pptx", slides.export.SaveFormat.PPTX) +``` -## **Remove Shape** -Aspose.Slides for Python via .NET allows developers to remove any shape. To remove the shape from any slide, please follow the steps below: +## **Remove Shapes** -1. Create an instance of `Presentation` class. -1. Access the first slide. -1. Find the shape with specific AlternativeText. -1. Remove the shape. -1. Save file to disk. +Aspose.Slides lets you remove any shape from a slide. For example, to delete a shape from the first slide by its Alternative Text, follow these steps: + +1. Create a [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) instance and load the file. +1. Access the first slide from the slides collection. +1. Find the shape by the Alternative Text value. +1. Remove the shape from the slide’s shapes collection. +1. Save the presentation to disk in PPTX format. ```py import aspose.slides as slides -# Create Presentation object -with slides.Presentation() as pres: - # Get the first slide - sld = pres.slides[0] - - # Add autoshape of rectangle type - shp1 = sld.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 40, 150, 50) - shp2 = sld.shapes.add_auto_shape(slides.ShapeType.MOON, 160, 40, 150, 50) - alttext = "User Defined" - for i in range(len(sld.shapes)): - ashp = sld.shapes[0] - if ashp.alternative_text == alttext: - sld.shapes.remove(ashp) - - # Save presentation to disk - pres.save("RemoveShape_out.pptx", slides.export.SaveFormat.PPTX) -``` +# Finds a shape on a slide by its alternative text. +def find_shape(slide, alt_text): + for slide_shape in slide.shapes: + if slide_shape.alternative_text == alt_text: + return slide_shape + return None + +# Instantiate the Presentation class that represents a presentation file. +with slides.Presentation("sample.pptx") as presentation: + slide = presentation.slides[0] + # Find the shape with Alt Text "User Defined". + shape = find_shape(slide, "User Defined") + # Remove the shape. + slide.shapes.remove(shape) + # Save the presentation to disk. + presentation.save("output.pptx", slides.export.SaveFormat.PPTX) +``` +## **Hide Shapes** -## **Hide Shape** -Aspose.Slides for Python via .NET allows developers to hide any shape. To hide the shape from any slide, please follow the steps below: +Aspose.Slides lets you hide any shape on a slide. For example, to hide a shape on the first slide by its Alternative Text, follow these steps: -1. Create an instance of `Presentation` class. -1. Access the first slide. -1. Find the shape with specific AlternativeText. +1. Create a [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) instance and load the file. +1. Access the first slide from the slides collection. +1. Find the shape by the Alternative Text value. 1. Hide the shape. -1. Save file to disk. +1. Save the presentation to disk in PPTX format. ```py -import aspose.slides as slides +# Finds a shape on a slide by its alternative text. +def find_shape(slide, alt_text): + for slide_shape in slide.shapes: + if slide_shape.alternative_text == alt_text: + return slide_shape + return None -# Instantiate Presentation class that represents the PPTX -with slides.Presentation() as pres: - # Get the first slide - sld = pres.slides[0] - - # Add autoshape of rectangle type - shp1 = sld.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 40, 150, 50) - shp2 = sld.shapes.add_auto_shape(slides.ShapeType.MOON, 160, 40, 150, 50) - alttext = "User Defined" - for i in range(len(sld.shapes)): - ashp = sld.shapes[i] - if ashp.alternative_text == alttext: - ashp.hidden = True - - # Save presentation to disk - pres.save("Hiding_Shapes_out.pptx", slides.export.SaveFormat.PPTX) -``` +# Instantiate the Presentation class that represents a presentation file. +with slides.Presentation("sample.pptx") as presentation: + slide = presentation.slides[0] + # Find the shape with Alt Text "User Defined". + shape = find_shape(slide, "User Defined") + # Hide the shape. + shape.hidden = True + # Save the presentation to disk. + presentation.save("output.pptx", slides.export.SaveFormat.PPTX) +``` +## **Change the Order of Shapes** -## **Change Shapes Order** -Aspose.Slides for Python via .NET allows developers to reorder the shapes. Reordering the shape specifies which shape is on the front or which shape is at the back. To reorder the shape from any slide, please follow the steps below: +Aspose.Slides allows developers to reorder shapes (change their z-order). Reordering determines which shape appears in front or behind. For, example, to reorder two shapes on the first slide, follow the steps below: -1. Create an instance of `Presentation` class. +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. 1. Access the first slide. -1. Add a shape. -1. Add some text in shape's text frame. -1. Add another shape with the same co-ordinates. -1. Reorder the shapes. -1. Save file to disk. +1. Add the first shape (for example, a rectangle). +1. Add the second shape (for example, a triangle). +1. Reorder the shapes by moving the second shape to the first position in the collection. +1. Save the presentation to disk. ```py import aspose.slides as slides -with slides.Presentation(path + "HelloWorld.pptx") as presentation1: - slide = presentation1.slides[0] - shp3 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 200, 365, 400, 150) - shp3.fill_format.fill_type = slides.FillType.NO_FILL - shp3.add_text_frame(" ") - - txtFrame = shp3.text_frame - para = txtFrame.paragraphs[0] - portion = para.portions[0] - portion.text="Watermark Text Watermark Text Watermark Text" - shp3 = slide.shapes.add_auto_shape(slides.ShapeType.TRIANGLE, 200, 365, 400, 150) - slide.shapes.reorder(2, shp3) - presentation1.save( "Reshape_out.pptx", slides.export.SaveFormat.PPTX) +with slides.Presentation("sample.pptx") as presentation: + slide = presentation.slides[0] + # Add two shapes to the slide. + shape1 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 20, 20, 200, 150) + shape2 = slide.shapes.add_auto_shape(slides.ShapeType.TRIANGLE, 20, 200, 200, 150) + # Move the second shape to the first position. + slide.shapes.reorder(0, shape2) + presentation.save("output.pptx", slides.export.SaveFormat.PPTX) ``` +## **Get the Interop Shape ID** -## **Get Interop Shape ID** -Aspose.Slides for Python via .NET allows developers to get a unique shape identifier in slide scope in contrast to the UniqueId property, which allows obtaining a unique identifier in presentation scope. Property OfficeInteropShapeId was added to IShape interfaces and Shape class respectively. The value returned by OfficeInteropShapeId property corresponds to the value of the Id of the Microsoft.Office.Interop.PowerPoint.Shape object. Below is a sample code is given. +Aspose.Slides lets you obtain a shape’s unique identifier at the slide scope, unlike the `unique_id` property, which is unique across the entire presentation. The `office_interop_shape_id` property is available on the [Shape](https://reference.aspose.com/slides/python-net/aspose.slides/shape/) class. Its value corresponds to the `Id` of the `Microsoft.Office.Interop.PowerPoint.Shape` object. A sample code snippet is shown below. ```py import aspose.slides as slides -with slides.Presentation(path + "Presentation.pptx") as presentation: - # Getting unique shape identifier in slide scope +with slides.Presentation("sample.pptx") as presentation: + # Get the shape’s unique identifier within the slide. officeInteropShapeId = presentation.slides[0].shapes[0].office_interop_shape_id ``` +## **Set the Alternative Text for Shapes** +Aspose.Slides allows developers to set alternative text for any shape. You can use alternative text to identify and locate shapes in a presentation. The alternative text property can be read and written through both Aspose.Slides and Microsoft PowerPoint. By tagging shapes with this property, you can later remove, hide, or reorder them on a slide. -## **Set Alternative Text for Shape** -Aspose.Slides for Python via .NET allows developers to set AlternateText of any shape. -Shapes in a presentation could be distinguished by the AlternativeText or Shape Name property. -AlternativeText property could be read or set by using Aspose.Slides as well as Microsoft PowerPoint. -By using this property, you can tag a shape and can perform different operations as Removing a shape, -Hiding a shape or Reordering shapes on a slide. -To set the AlternateText of a shape, please follow the steps below: +To set the alternative text of a shape, follow these steps: -1. Create an instance of `Presentation` class. +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. 1. Access the first slide. -1. Add any shape to the slide. -1. Do some work with the newly added shape. -1. Traverse through shapes to find a shape. -1. Set the AlternativeText. -1. Save file to disk. +1. Add a shape to the slide. +1. Set the alternative text. +1. Save the presentation to disk. ```py import aspose.slides as slides -import aspose.pydrawing as draw - -# Instantiate Presentation class that represents the PPTX -with slides.Presentation() as pres: - # Get the first slide - sld = pres.slides[0] - - # Add autoshape of rectangle type - shp1 = sld.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 40, 150, 50) - shp2 = sld.shapes.add_auto_shape(slides.ShapeType.MOON, 160, 40, 150, 50) - shp2.fill_format.fill_type = slides.FillType.SOLID - shp2.fill_format.solid_fill_color.color = draw.Color.gray - - for i in range(len(sld.shapes)): - shape = sld.shapes[i] - if shape != None: - shape.alternative_text = "User Defined" - - # Save presentation to disk - pres.save("Set_AlternativeText_out.pptx", slides.export.SaveFormat.PPTX) -``` - - +# Instantiate the Presentation class that represents a PPTX file. +with slides.Presentation() as presentation: + slide = presentation.slides[0] + # Add a shape. + shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 40, 150, 50) + # Set the alternative text for the shape. + shape.alternative_text = "User Defined" + # Save the presentation to disk. + presentation.save("output.pptx", slides.export.SaveFormat.PPTX) +``` -## **Access Layout Formats for Shape** - Aspose.Slides for Python via .NET provides a simple API to access layout formats for a shape. This article demonstrates how you can access layout formats. +## **Access Layout Formats for Shapes** -Below sample code is given. +Aspose.Slides provides a simple API for accessing layout formats for shapes. This section demonstrates how to access layout formats. ```py import aspose.slides as slides -with slides.Presentation("Set_AlternativeText_out.pptx") as pres: - for layoutSlide in pres.layout_slides: - fillFormats = list(map(lambda shape: shape.fill_format, layoutSlide.shapes)) - lineFormats = list(map(lambda shape: shape.line_format, layoutSlide.shapes)) +with slides.Presentation(folder_path + "sample.pptx") as presentation: + for layout_slide in presentation.layout_slides: + fill_formats = list(map(lambda shape: shape.fill_format, layout_slide.shapes)) + line_formats = list(map(lambda shape: shape.line_format, layout_slide.shapes)) ``` -## **Render Shape as SVG** -Now Aspose.Slides for Python via .NET support for rendering a shape as svg. WriteAsSvg method (and its overload) has been added to Shape class and IShape interface. This method allows to save content of the shape as an SVG file. Code snippet below shows how to export slide's shape to an SVG file. +## **Render Shapes as SVG** + +Aspose.Slides supports rendering shapes as SVG. The `write_as_svg` method (and its overloads) on the [Shape](https://reference.aspose.com/slides/python-net/aspose.slides/shape/) class lets you save a shape’s contents as an SVG image. The code snippet below shows how to export a shape to an SVG file. ```py import aspose.slides as slides -with slides.Presentation("pres.pptx") as pres: - with open("SingleShape.svg", "wb") as stream: - pres.slides[0].shapes[0].write_as_svg(stream) +with slides.Presentation("sample.pptx") as presentation: + with open("output.svg", "wb") as image_stream: + # Get the first shape on the first slide. + shape = presentation.slides[0].shapes[0] + shape.write_as_svg(image_stream) ``` ## **Align Shape** -Through the [SlidesUtil.AlignShape()](https://reference.aspose.com/slides/python-net/aspose.slides.util/slideutil/) overloaded method, you can +Using the `align_shape` method in the [SlidesUtil](https://reference.aspose.com/slides/python-net/aspose.slides.util/slideutil/) class, you can: -* align shapes relative to a slide's margins. See Example 1. -* align shapes relative to each other. See Example 2. +* Align shapes relative to a slide’s margins (see Example 1). +* Align shapes relative to each other (see Example 2). The [ShapesAlignmentType](https://reference.aspose.com/slides/python-net/aspose.slides/shapesalignmenttype/) enumeration defines the available alignment options. **Example 1** -This Python code shows you how to align shapes with indices 1,2 and 4 along the border at the top of a slide: -Source code below aligns shapes with indices 1,2 and 4 along the top border of the slide. +This Python code shows how to align the shapes with indices 1, 2, and 4 to the top edge of the slide: ```py import aspose.slides as slides -with slides.Presentation("OutputPresentation.pptx") as pres: - slide = pres.slides[0] - shape1 = slide.shapes[1] - shape2 = slide.shapes[2] - shape3 = slide.shapes[4] - slides.util.SlideUtil.align_shapes(slides.ShapesAlignmentType.ALIGN_TOP, True, pres.slides[0], [ - slide.shapes.index_of(shape1), - slide.shapes.index_of(shape2), - slide.shapes.index_of(shape3)]) +align_type = slides.ShapesAlignmentType.ALIGN_TOP +slide_indices = [1, 2, 4] + +with slides.Presentation("sample.pptx") as presentation: + slide = presentation.slides[0] + slides.util.SlideUtil.align_shapes(align_type, True, slide, slide_indices) ``` **Example 2** -This Python code shows you how to align an entire collection of shapes relative to the bottom shape in the collection: +This Python example shows how to align all shapes in a collection relative to the bottom-most shape in that collection: ```py import aspose.slides as slides -with slides.Presentation("example.pptx") as pres: - slides.util.SlideUtil.align_shapes(slides.ShapesAlignmentType.ALIGN_BOTTOM, False, pres.slides[0].shapes) +align_type = slides.ShapesAlignmentType.ALIGN_BOTTOM + +with slides.Presentation("sample.pptx") as presentation: + slides.util.SlideUtil.align_shapes(align_type, False, presentation.slides[0]) ``` ## **Flip Properties** From 35db95ebe9204737c8ca34ae332bcc5c66cc9c90 Mon Sep 17 00:00:00 2001 From: Andrey Potapov <77686740+andreypotapovaspose@users.noreply.github.com> Date: Fri, 15 Aug 2025 12:57:06 +0600 Subject: [PATCH 07/10] SLIDESDOC-627 Update article text to improve time to read Updated the article "Enhance Your Presentations with AutoFit in Python". --- .../manage-autofit-settings/_index.md | 77 ++++++++---------- .../alwaysfit-setting-powerpoint.png | Bin 24160 -> 22763 bytes .../donotautofit-setting-powerpoint.png | Bin 40978 -> 40061 bytes ...hrinktextonoverflow-setting-powerpoint.png | Bin 34701 -> 34116 bytes .../textbox-in-powerpoint.png | Bin 57372 -> 37017 bytes 5 files changed, 36 insertions(+), 41 deletions(-) diff --git a/en/python-net/developer-guide/presentation-content/manage-text/manage-autofit-settings/_index.md b/en/python-net/developer-guide/presentation-content/manage-text/manage-autofit-settings/_index.md index 3cc64d58a..776c22ca4 100644 --- a/en/python-net/developer-guide/presentation-content/manage-text/manage-autofit-settings/_index.md +++ b/en/python-net/developer-guide/presentation-content/manage-text/manage-autofit-settings/_index.md @@ -35,11 +35,11 @@ In PowerPoint, these are the 4 important parameters or options that control the ![autofit-options-powerpoint](autofit-options-powerpoint.png) -Aspose.Slides for Python via .NET provides similar options—some properties under the [text_frame_format](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) class—that allow you to control the autofit behavior for textboxes in presentations. +Aspose.Slides for Python via .NET provides similar options—some properties under the [TextFrameFormat](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) class—that allow you to control the autofit behavior for textboxes in presentations. -## **Resize Shape to Fit Text** +## **Resize Shapes to Fit Text** -If you want the text in a box to always fit into that box after changes are made to the text, you have to use the **Resize shape to fix text** option. To specify this setting, set the [autofit_type](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) property (from the [text_frame_format](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) class) to `SHAPE`. +If you want the text in a box to always fit into that box after changes are made to the text, you have to use the **Resize shape to fix text** option. To specify this setting, set the [autofit_type](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) property from the [TextFrameFormat](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) class to `SHAPE`. ![alwaysfit-setting-powerpoint](alwaysfit-setting-powerpoint.png) @@ -49,26 +49,26 @@ This Python code shows you how to specify that a text must always fit into its b import aspose.slides as slides import aspose.pydrawing as draw -with slides.Presentation() as pres: - slide = pres.slides[0] - autoShape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 30, 30, 350, 100) +with slides.Presentation() as presentation: + slide = presentation.slides[0] + auto_shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 30, 30, 350, 100) portion = slides.Portion("lorem ipsum...") portion.portion_format.fill_format.solid_fill_color.color = draw.Color.black portion.portion_format.fill_format.fill_type = slides.FillType.SOLID - autoShape.text_frame.paragraphs[0].portions.add(portion) + auto_shape.text_frame.paragraphs[0].portions.add(portion) - textFrameFormat = autoShape.text_frame.text_frame_format - textFrameFormat.autofit_type = slides.TextAutofitType.SHAPE + text_frame_format = auto_shape.text_frame.text_frame_format + text_frame_format.autofit_type = slides.TextAutofitType.SHAPE - pres.save("Output-presentation.pptx", slides.export.SaveFormat.PPTX) + presentation.save("output.pptx", slides.export.SaveFormat.PPTX) ``` If the text becomes longer or bigger, the textbox will be automatically resized (increase in height) to ensure all the text fits into it. If the text becomes shorter, the reverse occurs. ## **Do Not Autofit** -If you want a textbox or shape to retain its dimensions no matter the changes made to the text it contains, you have to use the **Do not Autofit** option. To specify this setting, set the [autofit_type](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) property (from the [text_frame_format](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) class) to `NONE`. +If you want a textbox or shape to retain its dimensions no matter the changes made to the text it contains, you have to use the **Do not Autofit** option. To specify this setting, set the [autofit_type](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) property from the [TextFrameFormat](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) class to `NONE`. ![donotautofit-setting-powerpoint](donotautofit-setting-powerpoint.png) @@ -78,26 +78,26 @@ This Python code shows you how to specify that a textbox must always retain its import aspose.slides as slides import aspose.pydrawing as draw -with slides.Presentation() as pres: - slide = pres.slides[0] - autoShape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 30, 30, 350, 100) +with slides.Presentation() as presentation: + slide = presentation.slides[0] + auto_shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 30, 30, 350, 100) portion = slides.Portion("lorem ipsum...") portion.portion_format.fill_format.solid_fill_color.color = draw.Color.black portion.portion_format.fill_format.fill_type = slides.FillType.SOLID - autoShape.text_frame.paragraphs[0].portions.add(portion) + auto_shape.text_frame.paragraphs[0].portions.add(portion) - textFrameFormat = autoShape.text_frame.text_frame_format - textFrameFormat.autofit_type = slides.TextAutofitType.NONE + text_frame_format = auto_shape.text_frame.text_frame_format + text_frame_format.autofit_type = slides.TextAutofitType.NONE - pres.save("Output-presentation.pptx", slides.export.SaveFormat.PPTX) + presentation.save("output.pptx", slides.export.SaveFormat.PPTX) ``` When the text becomes too long for its box, it spills out. ## **Shrink Text on Overflow** -If a text becomes too long for its box, through the **Shrink text on overflow** option, you can specify that the text's size and spacing must be reduced to make it fit into its box. To specify this setting, set the [autofit_type](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) property (from the [text_frame_format](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) class) to `NORMAL`. +If a text becomes too long for its box, through the **Shrink text on overflow** option, you can specify that the text's size and spacing must be reduced to make it fit into its box. To specify this setting, set the [autofit_type](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) property from the [TextFrameFormat](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) class to `NORMAL`. ![shrinktextonoverflow-setting-powerpoint](shrinktextonoverflow-setting-powerpoint.png) @@ -107,19 +107,19 @@ This Python code shows you how to specify that a text must be shrunk on overflow import aspose.slides as slides import aspose.pydrawing as draw -with slides.Presentation() as pres: - slide = pres.slides[0] - autoShape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 30, 30, 350, 100) +with slides.Presentation() as presentation: + slide = presentation.slides[0] + auto_shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 30, 30, 350, 100) portion = slides.Portion("lorem ipsum...") portion.portion_format.fill_format.solid_fill_color.color = draw.Color.black portion.portion_format.fill_format.fill_type = slides.FillType.SOLID - autoShape.text_frame.paragraphs[0].portions.add(portion) + auto_shape.text_frame.paragraphs[0].portions.add(portion) - textFrameFormat = autoShape.text_frame.text_frame_format - textFrameFormat.autofit_type = slides.TextAutofitType.NORMAL + text_frame_format = auto_shape.text_frame.text_frame_format + text_frame_format.autofit_type = slides.TextAutofitType.NORMAL - pres.save("Output-presentation.pptx", slides.export.SaveFormat.PPTX) + presentation.save("output.pptx", slides.export.SaveFormat.PPTX) ``` {{% alert title="Info" color="info" %}} @@ -130,7 +130,7 @@ When the **Shrink text on overflow** option is used, the setting gets applied on ## **Wrap Text** -If you want the text in a shape to get wrapped inside that shape when the text goes beyond the shape's border (width only), you have to use the **Wrap text in shape** parameter. To specify this setting, you have to set the [wrap_text](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) property (from the [TextFrameFormat](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) class) to `1`. +If you want the text in a shape to get wrapped inside that shape when the text goes beyond the shape's border (width only), you have to use the **Wrap text in shape** parameter. To specify this setting, you have to set the [wrap_text](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) property from the [TextFrameFormat](https://reference.aspose.com/slides/python-net/aspose.slides/textframeformat/) class to `NullableBool.TRUE`. This Python code shows you how to use the Wrap Text setting in a PowerPoint presentation: @@ -138,29 +138,24 @@ This Python code shows you how to use the Wrap Text setting in a PowerPoint pres import aspose.slides as slides import aspose.pydrawing as draw -with slides.Presentation() as pres: - slide = pres.slides[0] - autoShape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 30, 30, 350, 100) +with slides.Presentation() as presentation: + slide = presentation.slides[0] + auto_shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 30, 30, 350, 100) portion = slides.Portion("lorem ipsum...") portion.portion_format.fill_format.solid_fill_color.color = draw.Color.black portion.portion_format.fill_format.fill_type = slides.FillType.SOLID - autoShape.text_frame.paragraphs[0].portions.add(portion) + auto_shape.text_frame.paragraphs[0].portions.add(portion) - textFrameFormat = autoShape.text_frame.text_frame_format - textFrameFormat.autofit_type = slides.TextAutofitType.NONE - textFrameFormat.wrap_text = 1 + text_frame_format = auto_shape.text_frame.text_frame_format + text_frame_format.autofit_type = slides.TextAutofitType.NONE + text_frame_format.wrap_text = slides.NullableBool.TRUE - pres.save("Output-presentation.pptx", slides.export.SaveFormat.PPTX) + presentation.save("output.pptx", slides.export.SaveFormat.PPTX) ``` {{% alert title="Note" color="warning" %}} -If you set the `wrap_text` property to `0` for a shape, when the text inside the shape becomes longer than the shape's width, the text gets extended beyond the shape's borders along a single line. +If you set the `wrap_text` property to `NullableBool.FALSE` for a shape, when the text inside the shape becomes longer than the shape's width, the text gets extended beyond the shape's borders along a single line. {{% /alert %}} - - - - - diff --git a/en/python-net/developer-guide/presentation-content/manage-text/manage-autofit-settings/alwaysfit-setting-powerpoint.png b/en/python-net/developer-guide/presentation-content/manage-text/manage-autofit-settings/alwaysfit-setting-powerpoint.png index 3bb3477023dfe563d7a8a720f7ba0379b8a85ebb..e01b360b38618a7ccb80f86229db7045900eaf8b 100644 GIT binary patch literal 22763 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 Q01qISb+70Uv>k5$6A$ST_W%F@ diff --git a/en/python-net/developer-guide/presentation-content/manage-text/manage-autofit-settings/donotautofit-setting-powerpoint.png b/en/python-net/developer-guide/presentation-content/manage-text/manage-autofit-settings/donotautofit-setting-powerpoint.png index e6a7fe7af76e1c81eda0e61895f8118dfce03a5a..ef131ed363543962877b76a459256657633a8e32 100644 GIT binary patch literal 40061 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 y5pZpq8G?Ct$6lnqJB%w&} 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 z zkekN@aZM|gbV$3iUh3-W5?})U~Wmyh@TRq+GJR z4VpHnN*tsaUt(9|6R}wa5G8UPenvpyNu;-QGm9CG@C9`CKi>8)+Xob5i!|Imh5s}M z#M9lN9eS;b+wrLdgy2X9lXs&FmyBFS^nZP`I>Pk)*} zyV!4L?2Z5o_4KO$5l6z!f352^Cyw~TGBi;5&$}+wK7fo8+B#W?Tzb1j_r7dD@)`jk zxH-A&0d_oGi` zt0ypJ_c$e=Gu=2?zM?I7|A%aZKq+?v);3Lz5ojll?XeD)Q>aJSe zs0%U2o8qHbN_+B@py6V^|K+^)Mz!iF2bcyGpDq^PJn|y_FdE7e5FIEl%3vRNdejS= zd~Uv;V5>{vT!DXvHDV-w2GR&ZrFDc_ML#JIufC%b%dQ1T%r0SAZmp3EjDnx4>_;qf zTgci^F>ja))B}@bR%2_LlK-?nrU_5^^s5(uCa@9_4R6yp%#|pFuSj%DvXeTqCdCvl zQbFP7z7$iI2awvX^B^_j050ng96NBUxE$SXn+6SG!yota<9;-Lq60`UfxFP|knFcdmivZVM@5ot?B;SI*_6 z=ua|YvOc~s0s9%&`t-;XeCf`r2Zqwow-?9Rro8?XsPQ%_CG)XPs?2i0Bl@f}{25)a zmx>^EW!-!cHUep1R^-{%{n%~sqTZa``q0-T&gq2*nODLnrsGJx^tIt=yR|Rgrj=Ij z=tGjcY(=DvrbhY{KlI{WF*?ZyQm3MZ(Sa$dk)foTlh;4@#F`+&C$x}v-%Q8pB=IxF zqgoPb-z)2D%AJ;nO>fMC!fz`*G8ergR?IQ{WuWR)i9^%&dy7&|J#jaEi)VI7JdZf( zDB|1iqbJk?sV~E2-HmgKvdD7D((m%yWNE$-e*nQe|0AYBFwUWP>EibV?+?YP5y?(>Tr-$@pdwy~#&)&{c zRZ`9cBXN9&xnQG;U}cqK5nC1=>d+-(BC;Y3e^HtLrD_qi7P}(JYNPRbOpgk{+Cy}Vk7JW0ZY-%z4mAA0>efvDmXWN`xEc8xQd%KCj zF86tlxHz3er(WdB(dzEHM$9V+3JGqT{e$>z6Mp#8sOrSmRzclEZ>sp|{4=8F?VGG8 zrs}`{zEES`iagL@eI}6)Ll&qWW|NG&Dbf4=cXwF$?S|FY*Inx|A`iEj{f>;=o}XQN z9O4r}M}OvOn@wBpf_Ce5(#sP5exc&DNo}Wlrco@%xyEwH<(=IF#oy5zxYXjnqK$G zauHjz445rs|C=IyF@!}l)#!4GE`F}3MNm?3!E-yAor6b_+Qj%Yefi1m5(zKtfwrPx zHAAo62i?{?{E2EYTo)`>PF@zK-?{T3*7 zye>8(GR>F#8L1Y&Zd%+|bo6p&_Ys79*&tiIX?oC!Z=WZMi^a&56;~vful9va8+Iy_ z53M!d>&*@L;VDLzbxEi<^5tjkHmgdi4{c#wQmB47TjF+tPF}5NiJ!HPpJm9gKV|%s zb6Z?mlgmxJs$oMquJxIpJWuLOkf_+G$O1B*+vQQ;jXUlVhL)e(!rysGZ8Aw5(@ABn zT?;!Cl8p@8s;1At^iPvUK9Rj@1Aau?oj#vnlLo6cfZn`m)`A-EeA^;8@bL_4quNZk zPwx0j`KPN-Z8v^z>q&(PC~DNrT)1z_x%o~wb4hCCN6xb11tmr96kZ2pbb) zMB?N-+Trq0-0!p~j#Ssc9S5r^R0SzYyOU3|wrNVtMA=8H$@=jlx=)HDuYT<&THlY) zdH<}d-M1MX)HiiI2lFm=#NeLwXC4O8LF|nQ3~v7?KfhyKa#TWaxIIHc*vX@Kz7f=k zi`LB#tld|1{<0y{Gdbbv4KySI3(skt5}^61dTJs|vt+!{1{bi~C0d$v(M^@{lZ$Gw zhjjNV#np6)BmM1Vn6T^*DvW(W>6V1s&h&n-rji2mewmSP)I5>;rHEFt@1{P(!PyYk zww_)#LpA+rggu&CA(HzP{-!oeLZU^risWd_X5};DtKp3mo{lh6--DUV2c-4C8t>sF=~mB(GVztHCh+FD*Thfw+8+MSvU z0zN4?7RGBLlTlp(bR7D0$7?>db7h=y(Q2zMtzItrvt)6=`OwZX@Aus0n%Tp}$2^SJ z)ZqF=CN*p2Bb!UTOW+Ml^ME};E9GU)YlG-f$tce1joNp zY4cKhnC7)or{3jFPjuC#&Lv+5^@o{`R!d)gy(~_PmQt*!MfsEPd^(ZusZ(eKaV<$Z z$#>)Gy+Tfs=FDlI)s0Ql>e%@piPS>rc-E( z(>(~g+Ig|53GqDjp}p)Vs%$z(BLnv%ULxsJ?iaL(L;k;z(%bHumR0_P3G~xakl#B? zGe=`YHb(z6+S?Wiyz^sYnOAR{(@1)@AcF`uH>#a;-(i9WCd-UIG(L+`fDxECji6bZ za&?o0D-91RDD3AB%6Siu!9D4z#AmpY4xDmEkKK74wPy;*Rr)h5^Kpb5IX}0~^!V;% z+@p^(%=ezoZe2lYe?-BQ;!f3LD z*pCPp-Q^hnA2KNOC!NK!>c!{WCJPAq!|cCngJ4jM9s7%yX?+O2Im?VW&NI*JHOspr zQ+s_^vuYwjR`*Z@){OCZzS`uk|gZi6=B3TGAPc5iAv zhI;(WCD-*SY2BhVQI+gio{&@CgqVw8gU2;Zh^95)v+eGUi1wO=!V8yqwrLuZyE;f! z6`dNwj05qzWCGJA>yLMkZGx<)a0w_9{kNezFZ(7A7~uJx)}G4jY!FF`fm@2Td0r#_ z850R+JC-`0H3T8!u)YbWJ`*>kBNct=Yvze4oF!l}%#9!1tYz&sJTQ)xZc7^8Cf(ZwM}&ceEz4+MTw_WdEc~Um_L1_H*ZQG^{u@ zRcA~59m?8FBi6tdL`bl@yJih> zXA(D(FF#81{}bbPPDcI~&M0Qg8nRSC?U%IB5c!`Ev6r~~pNd@Rdq()OI!l3E z|8{x0{=-W0eghu4r>(TVzpgKtzK4y~;b7~lkgm6tr-W0RTgeVqsx8etEtV~dND&XR zm_A*BzVDz3FUIbo9Yj=DqbDt|d+8^XN3R)o+>q#1ZXFX*hj>hxK7bM3%P)QDGd0Ni zrDkHN@Mu~tYgpw2Q?5Sc7Xeq~mN28_@d1}5#i=(GDi6amzBXf_q4s6IHVxoMyIGlm z7U{zXQbSGZ4q>`c4q4PoYb4ryduO3%Cw=WkV*R0l0a8Z4p`cgpR8&{cEsb|}&b(Q7 z9xIp&2)+rPF?Kx`q|}ppW^cw+t499ILgzEZ>F=Wo2h>~KmywRKZQO;2&%uLsPue<@ z{KW+I$>rvwk9R-4cf7PbcP+vk$KP4}KB0+xX4EVYXPS|+jO~}&xuk8WWrrka3T2Ft zR=qftf82Jd!bTW24UE=hJ(?NcE0gsg`4EYRpGV*3>5QmH@gIt!e*UquUvk!w4Zt7| zYRkLSd#g~>32wfh`SgP=dHM-`@R+hm*DFmrGNJY(V3L}??e8xMRHJE z>%Yv{bvdbjH%q=aS+w-;e(?+uVgKwS&mHm%()7PqxniGU#9ig0@8Cm|(L{CkPkTv4 zlgTOKw9c!?`SL-4s#KuLiGA`+aik;oOjq2u3fGPRarHe$fUKc1^o43k{E{O#6W+e> zRXybhM~%D(M+x`azj|gSTIW0?UL~5@^?uzeHJe+PuHJi$KAaN?psJXyf}mIXVLqNe~$^ne~;c_35SYLpEP}ig=cPUt4>`< zdhuM<@(D$=35s5oqa=6A)Q?;_6V+cbQaEgC5OCasTJ+~bYQ#rtJkLrUpTt-`E6aQ! zz%o<0d#@W)=qkg1jzL6dfqE@&ty%USxAMY$()FJ(Ib(3c#ml1G&r`XtN?j9AHWD6k zPFw$Asva>Y`+y@`u+QA@?h)Pt{!o~G95eF=BqCYP^Zln?eoWh(9ml1~(Hc^L7nSJI z^2x7+Kr7!jQ(uI(B14ylMsY!d^BaAAcaI_{fD~xegY9TElrQ}<3vD-=; zXifE%r8}rPSZD9+KDR#{XY<2+9IR`pe)~0^$7#GPQhIuS#n1`aaol2kw}W_cbtv&I z)a|fD&3fiyZb?xRFI4m6IKJ}xn;2=^&2h;AF$1SUqusH@2YDtW)RtF`XY-m{TH!&+ zxrmfbbUnUj)Ccjcjug^9s6kvVhD3(s#Y$~Q zVlmNlP}Q8DgxWia@+3^gyf3jTBf4@uv3L!CG_&3Jq>S2S$swk*?Cn)P`kBf%lAZp~ zq;aD@6KbA(i5GPaz>>Rvfz|J-mQniC{YL{N2+iO6?godqYTWg!xLG3Rz2-EA3CVrz z6&5pFI$+tShpv)1s2x);EGX=`-M^*GOtK53qyGRG%8Dt^XFU#!!?r-iAM#lDv1R$SSG8YFdVvf zvRS>?j&lPW7W3>+e7VcSib`I{6$Fg!pCMT`$(4bzl>=9nOCbk(^uMz#s**1(;i?Z7 ziCFX?`=r($g@OE8zp1)n%9>W0*L5KkaUZIz!4%3xjTb4~A1bhSf-l6?aShI67vfwG zZ(8t%jrZ2sDE?ujTq>N#8O|tdox7)vwse1nfL!@LA^s(xmVl3v?@6eG;WZTK*ty$l zMyCBZ!cU@-MiaOR}NUxhZVQ zQ0E7SyMxiSLDX21i?R0VxAOpj2k!lRW=l;$Aa2vN<+YAw+tNG&yyjAQF?Ne3(i0l=3D6t4%li4cLZt(o`Y~K9H7!BnnU*kf#(vI!)2ZWtXZxeJye0ow-g}WX zz{s->xz_*`5IrGy;AONs+FM6574?!+-PHH}6}%YhScKjEKGFn#XR0{GE7D{ z;@(`@?n}f9{Gfg-=Tp~NMsSM%A!eO$eZ3|)#S&S2ZSS`igwpTD%YA*b?HkcF`CTMR zJ+Q2Zoa;p(fFE-XEc=T>{KS2W!|CuuV3VshzOddNn3fxP_@tWY zYSLCh9DoNaA%TFoFEV0JFk(Z1B!Mn*RDWp85GG@R*@7@JRzp_sX7(`H}#BK<^A`*TRk zqe`swi-_?}%N_tohIc76TD(zc&A>2&jo3n=)4%kU$P7f*$oP#zh&IM$7>{{;oRcz; zM>nbkEhMJ}|K-p2>D|i~h~fggoNrP*4Gi5?P4vWy4aX79z}@Wm-#x z+Mb%^j~Nvp@lm&>8k+Z-U0UPsKn4u0yv5OkPsrCWSO{4Ij)!qTZzDHe2C&-zDWpQI zKI0+dWx$e?QS1bD3DcP2RI%=K4A#lPV}6m0QV{m`y)lz(TXAsSm63@N?Zs}Ru*HE; z&y)~H-zCZdgGQkoZ8E2x1N}z}X_Wj{g&0P&mXYQyi)cTRHArSa{c=s$bdyzcQLy-z zg^WjzGHd0=(tp%EBJkEnFk-GNa{th{?Wthb%dl8fvYn28p)gq+#xx73P?1T02XaxM zGF5%}==_)PJ=pC+Y2xS86OC(LFbQtNND;(_{3^Q%PpInR)__2*OcC?DZY*vokO%ka zx^FSS)n_`hU~jE(X~An5$*iDwp34+?hfnc!ha=>UH@GMyk*Za#ga9Boo_JZyjAwRk zO}FgkYwDOYuJBu=>s}+7*4!ykH@Xs3 z!X1N&9hAKTxZ^+t9lqFa$p#UQ$ue&-VPBa2F;nQ2QL7mX4 z+Qxgohid;&gKjL)9kj#s;sq;EQ6ltyIkfF1vz~h%-Jx{2m^AzIP?yi2)B{&IZ$R1C zJOrDG0xJnw)OXE0;N5K4n~-3vP}5{%RE2q%5K?UnS(_&G&aA+1$)2q)b}c87opxWr z>s=cDXMBaW2k>Mt{nw=NwHP^)*YXDQJUhI>K=kvU!trvdm14Q1t`4bwYa#l%Qw0_U{6(ymi~>#&A?Yr5kdF74D&QK4>`&2Ucq zwz+sQS0ivkm=u9pgkjycPNz&A+S`ou@?9%LteKifEhg|NZaP1bTRE)EUhY! zV|}D`;3n@~I?ezg6(S-9Bn({k;E5;rXxDxH6IP(Lc3(;EBOsYOqxCIRcaR&3MY#JB z9JL$-n%m+Gxqx=vU+PG4PdeSiT70{Y`Kug$GNQI8`J(uwI~3Y+Nb~D0{J@Y5cvAQ~ z5(IZn=@!1u{a)i@){LexV88rnywBtK`rjzA2&XAF_ejv22 zYu5@;jRpUtfstI3VXcsblte*85Qu**(C4$FE!+RBzV4hRMaxfOs526VwYsB8KThiY z`3yHibrG<66v&(%pB(e34 z*1XRu9ZF~#@}@)*%JT9Z&&~^K2Ns7OHPvKX(Gxfu_E(^)TUN%4`Lq{>-fca4B#nzK zy1Y$gBw(nM3ODHy;R}UuB`_MmBZO5W&7qh*^SdY`e@(448p;&C9**SrjaQ)v z;h-D8(oSv}80o^k@z+ zFbwHM$TA!bIFK0Rc%p}7bU0CL-U+})o^591`4_zLgwcqu8cVqfUwTSCF}1zFUKCoI ze_j7BAOh2as7(#kiCUmED!ZMJPkRSp-dB%b0)kFHF0J?uz?ome)2!T&F#6;nvlC~m z-{v$A*La~tPlXD-OT(2fPFEMZl>S)?6T=|g400{{T$=cS%|_Jt#)*FK9EEjS!`BT# z#DJlJCpc(YsN(o%9+8YmL?lRI+a)U{8T|{9iH%iW9uy%O`ms&eaqiZp>~X_){J zuzu=p;7*gT%K`reBpW5@TyQ`3%FQ^*o8bGo7oWcg@e!;D{*0Lddv)31Aa_`ET%-I%^H#|4l(gkb%t%Xs+O#$7Nqu$Rp7nwb+W92y4%D@12VNErePqPw2M(78O^BQhn-9Ba3><&?%6B6 z9j*c9vGe-b?Y&OFCsgCM(ZP{);pEF4Ztp_o+@hl!-}G?oQUQ-HD)xg^oK!EzftD>d zIgO$AqreMz92m75Q2$cM)xiWRvDrJHJCpfRmR(^YIdqi+KO=;;jE^wicWEDcE&ngS zTO~~c`k?&mjSig++mx#n9DZACCzD1>8VS4n1aBsKlSfvHc|&(8wW{el2uW#Et7~>o zo8@(ARJ1xVNS0qhoQHzXzDV!l@1$cuMf?rp0A-}@N6|u<1LiS9CTU=+se$h$H9ONs zmZ69|?mq(8fq1*hi~FPT9ja_{c(OQyWGO@n3(ny;Ua2GL2^enB5#b^ZKq@=3 zSNQ&4B6Id*I)gkQCFAF%)52}{d#|IqOh{vDaKy%@1yB^)6L+aGV`6h1U0!}?c@78y z+9|*Zdxh)_!3vLe%n%YspMf>!Qqy#|ZWN!q06cUvMUDY&OJ%sQHzH5^$Jp%D07X;y zJ;`i+egwD~H~t0S>)!kJsx0p}3L$ZSqT`Npnxnns-%K%Vbn3VmwNl933#rXI7Je3; zC-jnzV)~9~0N@ky-Z9GYB3T=px3ZzsaQlD6h3hF~I;nOtE$@5s8zVR`I|DlIL>M(? zrQ8Q;SbcewY>QSDsuu#R?Q+ksZYKJWWlrjQRr5D@)nrU>SE6IJ$6}b$D$a{%i3oiK zp6_e!GM0nXBJ<>4B?sZj)qQh024>*KdH=1LASdRfpwS!Lb&HSN=0f%>2Df*_fNHYX zlLrX9fgXJx-XD{+B4va2@TlZ(>~gej#17+^`;v$%Z3NMt%Rc>>srb zJ1$zQ26RSz7LdsU?y?|ZQM8;NLvP%Bb+_a@cUZs7b??<)wXlp&G!2a3*5j=e{V)18 z_BDjNfoSPEq8Aio5CaY@5Vb`(4a)ivmHK96cp*Oy-pag&vTp4{6 zNoK!coC+p`#Z;pYC7D_&T#+-wB=bBOi$XEQ-L#|?NdaEmVp0uw5S;gaC0E(4y3_WE zm_)p9w#!4jurntAOIuCP9!3%pgV_IfOz3de^tZvmfRT|AXFi^@m5O^|J93gQ&#gDv zL7G_?yRwldVCGoZYD023)G&81D5#YUU+W7hf$#OtoDgu;(fenB^{9YE*kycjk3npz z1s{8rOr9Rzmks4lW7AbCX#Yo3e&+qUjxRmf=0m=jZ^|czAl2FWk<%}JoM6zs{Ii#x zYJ8TgPlsJ^k^XXZ$ScveSFGu~8Yr|nQ!%uL+#%;NGGr+48i3w9sP~IqCW(Z(zy|XS z|4q$ejPX2o`X9!~1ZIUj!FryPsq$O<2vfF$T+j6mGek;-k6lPV$^)sA>Fy00+QF!( z$gm;$9f?=DJlyF@9)QpRUcwr29Mkj2uCCRs^GaCS=nT{3WH`(MyskuAkkWaMYy~wZ z^>+f6kAR?t6xP6feiWem1h?vwy3>|G4)Z1f@M+2t zILDpd9$Ed^zF`>XDM=~`hA_Q-iwfA<;qTAia^U~4$Nv{p@Ba|exM?LrVL`!nsjy={ zl@`rEv}a_jKP%ed^U2p1_ZF{7073$uwFrzX6Iyh)b%bo-vLF)y0W!7FssX&+SwPN| zvLNX~z6&UIHsL#b>5f$_Zk(oJSM(lNykomV(Gh_k0Ydf?v1b1!@E5OTZwA;E3N*d0 zdI?C43IRld=>CMw368`Qf4-p5=Z_V_C8(bA&G6%J-;tF&F%$hw^>i-&_q)*xFzM~~ zF2QQgDm8w8b-`S-yX&Y6##W9(H|6b6c*M?!UZOS~j{%OSL$F6&z97jMkCGmw+J0X6 z6#N93eL~?c*47`-2rx7DYTRfM<6aB625=C>SyO@%@F7NP)xhj^wWGS;9`XE$6Ab1( z2IZ%%=}K0yGI5};ngx)>jZRFU2RX}`uZ_=>)@Z35Qn86W-C5y|P>9M-Im@Cc=rEn= z4oa!KBLuX^$b(B?+jSH@WqS@HPG;c_Ai#y9erHQAZcXruLI6}amBeS0w@Kr-mpcCS zr+{Yj`pWCQ%By0Z$i@^=kroSi%@T|>*FiV}7|pX6>mD)8)w`jQ9{d7GZ&s|Ffnj?| zU%hYs7E&&u+C41K#=$CQtk2DT{vnWR4KRWIaFs_uE5ZlNz2@k}s$Ilb?c=2o;jOv0 z-fB=(EK`En*nWA$TK}^Go7=0UVSKn%I-n}}Mm}R<{K%-PvKw@a>+30(8Hh2eQydwz zj0}CRD9MNd-XW||coZf^dITk_K+30ao414zMEr#na6ujIj-YK2q^&Aei-I@ISApPhJJg$U@IE)e- za7CIHcR#W@e5|fzfF;)oJR3{WA?HKYH#_eBb&Kd~a7b+_1q;c`61)Rdb0<3OXbClc z$mb}OXPpy7+=x?e2D1HGCX+8^=1F7o_t28l=z{gL!YKuJIPCvRF6-lMk=5yG%bg~U zRsaX|IeC-k>XS0DWo!7I?<8R*5b6?!7aW~b?bo(}_r*N$gGGP2x0{w_l#c7~sR272t(GGdN7ous2~fS+eah2JYmXAoh#P4NqUShpWCicZ410;HvlVk^#K-R>I?gNklZPZU1wK6zGnZn#Mj_D9cF9NaE(X`f{!1U?DG;zgv3wiFT@?K3DbEQ(xHyUlrhX;;Ude9;IOAX2 z%x%sy?QE1I_(bV1O|<#IMPLS_j@Mmz9FK1bRM*#%X}dAm9eB1tv~=47gO?DYSsc=-qJN ztnTO_K2bl+*U4)lCba6&PNnb;!>mi-vbo)=Pl|2&1SqeJH_}n3DXS-@>x!PhjN(ox zjbXpfMD$}a;JCYACVVJPO@kuv4E}2iJ&-d-n+Wi_oR2lPr>@TM+^x>7l$~Ud1!>lQ zGJviI40E0u36c@T8MASLw`50J3~_Z()FOCUGK>L1%FMW98nYq!)F4X{-C$)`_V z1;H>!AdBKOCFovR=_4Vo1XNgq5A&EAWQ*@aOdQGM>6ahlm<#v5eP6Vfsdnw)jqm`W ziW{twaXYEiKSWQJROU(8&JEhvyw39mp7Rvk|1|2BRlAG%!Zu;pnM%2$UIeBNH!%XnP?QZ4U^f(NPqy~Pr;(7J|Bz#Af* zS-yMRi=Dc;gk^0SjaCWh22s_|4>Uo@(7DS&7Zk<;J}eH^EXG2R1S(zj3!wHB$8XJ7yFzGSm5vPaX<*Zz&|m%vOPI|t`q zsMkWL@H~BTx7>n0xcaFWT~$dbRGJ;-Ql4PDmt4d72)9kuZ4IUQWpJ1s9Jf{SD3=Zp z@=0+|s=_TugK{bn7cbWR0&?|1e}~z}#+#dH3A7;IM>#+8)L$8xEJcV0lMA(CQN$J1 z$dIN0xLahHGLPVUyOlUfgqivFppPxlHYGDpCpdexr}1{_Gf#^iqe+f?pv;a6Q#{WQ zjyz?RS3dfwt@CUy|1=*GoMSh=ev{>b9+a`#mkBAWWl6y)GK8~yo-ZW%=71)eA*tvp zjL?doe*W=mWZ{y=&<7XhAB35E{dmIj9;y1VU5NzS(vMbF)tA_ghHN(i2iU#cG)-!r zD-^-R_Vuf<7)b3_3b!&^kYXa;Q~5&l!G!>AKZBt+^AUveLP5DD$$ae=zPr2oB0qm) zBu|PLW6;GNRn0NN;LV^vsv_=+#i~Wz^ zk$;Rp`ng611~Q?rfWCbl#Hr7 zN!(@Ls&}fqYZYH9gYyodwElZeS8AO*H(i8PI0c6f)vi?Wr5jY?u(*C_D9N@prF?h~ zf#7<6Q}vquiciW#eQ(DaXrj&ndwsQJ-A+Uxpn-YQ_sm;G58LRVxh!jn68AAqB*T6A zo3LzuOC~|N3_70TUDd=@$fAJxi=f$k;&3b}oZ{A<6=K^T5 zt?~Jur$SS{HZd=in{r9b&W+{@GIKQDlV6)Ta|r}2po*u`EcW8MRsg($wM{rKKI*D3 z7hT9k_1D{n7K1~A3UpZv|B zcyCxc*911EN@2f(W$twr0m`Dk9F=opj^TOw9U;Ti4W0netNmWRcisd|QiS{P)r+1r z(M%*rfC||nNzE@qK`2jMZn^;qzO{<_A$BTdBL#1!qjSfm_s*`C`lXS#^ZkxH{N>aY zox5C8jj+J@O9hu-Z&f)pzP0D7&kiHrl!>UtSp zhxCSFp?BKEY+r_Oy+!rYONjd$#L?&3AwkNPpRu~}5p{+PE;G57+&KG1+fS-sBkVrc z^y0l#b}!D#_D63=pXhRl`2{TrLlCe%1gj_)xz#`8MHhW8=$N%rn@n855EKPKx7A{Y zPxAT^9>tCEujt#;{e=Derhi&|W{uUe85LBt*xb?4S)b7Qw;)5PqZgpS&D-+2+^K%{ z;O#hRY=G?Z5iZp!&4sicK*LFp70b8R^?75kDl0CFb1@WCtdp09+S3NN*Hs^vOzHrI zmn)zJIsZ^>3Ab%n+3~0J`k5cAryTaL+Atp!;=8}K^%SbP{|_21sqh*e(WVtL_|ug+ zUEjVGO09h*fcf$DyPEYj@t=MhkUTU`quIqk5T%7-p)jIVF*27hxDOOv8uCjh&02nV z8+adG$M|rbbdQ@oc1$FhSyrazE^d`_V`AI>{EHFwCfxo20*IyyzS z<#h$Z`CSY9C9*k{ts{QJkMy-?)C0C$Dl1t*T~KcsY^%{ygal@iT6=S57y@1srx+BI zk+rM;i@L4(e^Ix4VdE^s>Q}&A4`{m?uqgbh(-?3zTm6wQj2C~8=Q;5_t25EQDOrg~ zKl#7_^j6A>>K_H>H}$tULG;hNY%vxvz+zPZ1wS4e{Uo3VA|eNNstmVYdCPBRKy+J~ zCeW#XtVG;)bt^MEFi*+ZSXEGOa*2VH?8(4JBf_ZAm^l}#`T6j+IZM~JT%YQMQRxGu?kjAenV{E$;ETo9xQ#dN+s|8YXc}(3WlJtvo=m&)%W*4-ukumySqv+E$CQE31Gr5 zlyliU5;NNj9;2$~?%qE2U2;yMAcdP@8b>niY4Y9Sy^j!hxRjT1Ac|Ind5WSl(IZb7 zouly-Y&!D|dp|Zp=}e@s_CNDqsIn9AW;Uvh;_d@>aCGWGjUc${@n?QlUgYtxm&}46 z6pcUF50LW`TfuQr>IwiQn=3sFr2Ux!9MM38M6rng1oO1}#Q33%3&Mn+X~XfTl#rveHw^$y2qhFnV#wPybpb`}R<;Kj~Aw?ab;ipEh`H z-U;STfY`hn^rpQ{P?ZlQ=CJ3*C8Zo*pqHMQtYj>H4t9yl7apF2;gS^m#C_ETs@J?V zNU>l6RhdtcdruHv=ii-dR0bY&pi*C}>BJ2gDt7r}|1z<_{eH@O3t9V|aK~?~j5F4M zIaBj+zIRZ~Hw+`z+LY_pp#)*4LRxuFr^8bf@{%$r#-hp?kTslKZd9jeykV&#H zJE16h&8bb$tkIh%D$HoX6I5~rK*rc|zIs$4Yb`JznxwA}J4t&7TKKFn@oGOxjA#G# z>(|@FL^h(;q4OJU^+%B>gMwy{h5M6>7b!n-1k7d4d+9x^lJ$JkupvuPk zk8AT7FQD3ktL>B3Uy~2PSLtspcLTpZZwlc5#QXL01NcIRvL7|zcrzyp~T9{s&n^l5HuVg-yyH$)mK(?efEB>rlRt) zYvJZQ-g7)WRM3-9++llaS58VoqP@n>*7h%?Yfw8Cj9R-6;LHPv)%EoNnG2_K>gp5* z>a9Ledd>ftXnM9am)(>c?avN92LtK3)QpW;ptU)AE3ta}K&R24WJNztGMSv0OZ!BM z4d=N4ogzhXy;BVh{xde*A)26Qyw*Lhuw>oKuWNg^z!34Pzvud7?KN#f!_$ZcE3paE z{vN3*DWN?oI{Fn{=<5RHZnyN9s*{t5CNCp&Objn768-5QMd_$HRW+4MbFwdt=L5<- z_~K<~ixVfGt(vB*r4THcizl?oII1<86>@J5KB+sD%kkqQyISc zeH$Z)ZlCJz=^2#Q(k@Le-EwpK#)J7NjeT+BP5VnY@4y-#CL;EJ4V#@ii=(ZrbH^Ll zk~ca!dNu`#cbV%8Vfavn6Y(S88j$%hoXu%bD6YM|ajN(1H?h0Ax)ZKA=rli4IMwSh z7rcTDx-ynhh=pMusFmaAKMJE#h1c>Xzy!|giTIg{lRUR`@UvTG#{8bi0iyl4%1^Jdhs{=)+x26b3JZl%V4eK(WO!x(#m>g|j&N;ZggOeD9(wB3sS0_u+Lhn@ z7SY>A%Y>`0S|sRVTBG2%Hw}v15&4wD!vu*prO|P5_M91;{KCRdhvJq^oN@_K8_Gh%z?OV_4bGU`|TipNA3RxC#@f`|zpEW7Z10Y*H$ z+WktLG#-U3vyUTsWNakkiC5i_b=QZ6;I@b5%I^vV_!*rHv-yp>aO`E7J=W5}fd*Qo z#?>=Mo^6TvHaZ&C#^uK@l}Kxt&xFV0UE|@DEV--D(p^VBZEuw1OWnY5d77ZOU-{Up zS8jy{p&qTr(EM<$&gTppTN4bzbTMYtdvhXCfs4SXEtjU@2BSFQ`{YT1fZ5kxzdbif zFoEvhnVFfh^Yc**Vl7p&NTU1P;dvra&DXas^iytE_V@31pqnnGQTN)Z9oQrOt=#M@bVpZbS~-|(e8`}!o}JDlKLzux~#>cI6$^c&v0_r`Ch%}>9e+;89a$KYVq^fhSuJXmm#u=k4G5L6@U zy?ObI!_dL}fxM7c0+`jFWLYy$dPpHwb^Sa{>^M~1@;RshI!`;x7{Tn-OIC3i zTWd~T=<45#!M;B2*ZHABA$p^7sx6{Z&UZ4H&(u>stU@?hQbOWBp(h#PZ&v-Z(mU`x zFYkPzU{=A&4Oar`6KuSH&8-$Dd|FM7De)G$mdbW)>NWJ%o}9~09o#J}9dZ!fKsD@> zG}2wP(du1^DOjKF^$sqlB0`KJCY7y>VBm~>crJ*q*i+l0t+h~*{FKO~yM8Qa@r}7) z0jDv+V<*kjf^@U2n6L3sNynI=7Y(e|QOB{$4W%Kr?6Sh{M{KYHUHvdM*o6+=tTyt| zFRniCI;M-Y6T4@Yj#h}Fqsf=0p6=T16`EB`^k#4w<5B)GqV?(laBI5zaoabdU$uYECmVcXDwbqw9NF1?{WP^YPgWuRxo71Y&Qye*fOu_CUT-lVuSC zk>WYeF9A8%JfB1M>8xY#MK0gXv>Amxyv5#i-@Vj*G8dT~0WEkD>hv8i4j-2&=bwrE zy|`$wHXDo!o}9Go_OR(m3QkC1mAT%GtM$T<8KTV#D$$3JpKed#Tsm*jDNCxED(;OJ zx501<=MRKX&cb;d@pJJhxiURnS*xh%>7q%ukARn>!uD@*vhk`wbW9A(o^SqrE1X?S zw-i=NoiONjU#@;YKdZ$60I`gK9+Yuv7hFzo)0Qq>K!U z{otnqmx&KLwlu*-0xc|?CT8@sxSNjc$Y8eB~G>MU4j)XZ(tJ{UcX-pE^D ze>yN0S|uElr5S&)p-*pqLH4J~hO0HJgH)pSupVw|G^Rkumol>KQkthGR7-CV{JAh( zqC!0=$3eKnnzg}u2zHAqz#8z+Gt61h#&jc=zWlDBfR2f#K#vFm7FE?Q`Jbbsmjsz` zT1U?bj2%9F*pZC~6Y|{r@Y!?c8W-!lpZu1PlEU;751u@V3HSwL{tywqVs`iLtf)?i zVrZAFHj|;v^TS6NN0PN`123tG!vrE- zg4WmlW{%L~e0hc0!g~T+_oA_VLFm*-rmj;?l`b~(I}ls=ro^2c@884ay$gY7J>iar z=mT_M3f(>g*y#FY3oq&B>gyUP6w1~8)#ftR^D5_26BCmf^Fb@I4kT@FioBp-YD^4% zU<<(45$9Ubk2bg()UsQS00OqESGa_ho3ZYUO)D)u<)2}>`KO7Vho8UW$*P6LYjKic zq3O{E7Y9sx8lZ(XO58PWh1Z>6U**ZGtWM^ha~BM#)&b6_si_@#O2ToJa-uRQPm@#r z7{YZmnA3Wyx3WzkiJQ!6{p!A1oVZPosNmu?>~eU+G48k>KbTti%nEgEOKmJ6pZv4k4G>T~6nS{!%pk z!-o%rYc-&gfq(a-Cg?L@eOT*|TFA!-k$dmOZNeQwgT?_B-hR#NQ@M=pgvIfpvXZ6x>EfMH5ei~!I_P$^ zS8-ns;xj~bZmuhb5*fxoUS$Go$IumYE~FYsij9Mh3YWzoDHQg=teU=O;Q z)S9SIzs}aEaXs@OC&k=Lc6BHj7TaWIoVl{Lc7%YyTtz_(`8{F=CdHrj+5lHZ# zp%=T1+&3$+w2F!|kX(^0Cl$>DwvMO(5`Fsn=fp|LvX39nck!+-$;#c90|>7l;nkUBzQMKQ%n$}kW-@MTW!mq<>$Tgtyk5KKkMsOB^Soa3o9B0VzTeOL z`~1G&$L0i1@6$(r>TB7RLdk3Q^2*DtwUi6zNr~zQrMvSdM7K8G}WiF;_g?z(c(JW?NH8AVw}~?uc;#Vao=gv&UzYo`4?L~(b|NTr?<&J=x2#K z>GaP~X1Uy3GSa$YUr5MdyG!{eLsmFx$I}ov@Cln&5K0)cJ|WPJpDHLU8#Y&OH=(=RGzk`|FF=ohbOsY* zDF|DfepN2AFm*q16wm=Jwa44TqZyP9{*atI$ggseF-lQ9B7BV*P8lRmKg!229!LsQ zR4?j>3mUMeBPuH^)ipI!DJif(?mu{ddgzU;4~e#NeD`=?30A;QgJ%oq~Olo3gNzmF(*3DpWc$ z8B@e!u?h+b3;c4ME5i#)N*Lm)&k^FVSex7VE{NK z8C~hwuiBK*ad0L~jWy=<{wRLXYpHo`N@7ueW`Og z3YI4bL+WY@4g&R8OlD%nx2ipyRDGPt&%hD24X<0dpt=ca)M}uUK`nLl57R-dty5q? zFU-7t-2Yt>dlMhTOy(*{;8ab>?ydtJt@qdli{<%Y<>HL}w+3-qm%!vOb>$A1(cIX< zZ=>r!+B~%E>gPkdnVxgU*CNNW)%QH-V7zxuhH7+I)hplZI(DgI0K<6S9XS4d2x;~$ zXDNg+_ULL5P+_j71A8LgH13sGAla=lq1RRCN*XDo!{_2oE<#OOT1)B5&nGdy4wrz# zriZ-IY;THw$g_iRtIYQ?t2CMa5;2* zs%|KD-=_)gTVE2D+3gVCq(SKzon1bO{+oNR20ER#z%YLU=yG-W?4}&_*5qx~z*$FJ z4Gay1L9pjb*v=0Q3*=}t8W@fv>HlCL%lYQz!`E{d*OkKxB%&{rIR;F!0#u{nB|$pd zPF;C#0Ge=r56}%b2u8eOMpo93ps!MI-Kx{w1%s}xrDfvj`Dh|Q9~@IN;3FD?(d?Ht zAZ3GJ8F?n7-wJXRvt(ywg~;lAb#=~1OJj(p+58G?94>bni>+44Z9A!)*oH&rS(>5J z>?~w(WsZnP0PVlJU~#K{VVw=t6U}^J0^*bmK(@iu!<_)6_5N+8x%iSSjX*!PO57EE z+l`ZC<&*Dat#sRM<--K~?%sn3Wnjj&IPG4QxUu$l4+7zJsJ1mGoW3TK^t3c=E)H8$ zJXWGu-+hWUrd=+n20jFA17ZGtRh2!7J%jj0u<;b0T$~t?gi&DNaV~AyjWs5!xa>Sh zK5u9k$&93k)ILW!3->;2TMV)hKTWy78Ggce#|wOP86McZL1xb7YZk1gpr7*6Y`e++ z2j!bcdcAP_BZk|xL>@W>00%OlGjO5m0Hb)()ydhpFvNiwJS@2CklAx7Lsjwt?DxI&k?qbYCh0FL?l`#Z8XOWC@+t4J&BDVFQ*se3^~?%8*9Z_+Q>WyKsT zorF~J_NexD6UYV-ErUVd-j$5%Q<_|6K%#i3BZxBD7d3YkQ|fVT5@{o*PzTkq3>PIy z%>6RypB@lHyZJ1=GWsRtbSL|XeAT4UQX$ISBM)E2yavkgj@5)+SGYqrz^%L@B~`>L zXosvNV0NR%Sxh(bfvHsp@YTH#dl`iP0j}bVCk&-yL(pM%_@_`HP`amu(AlIEh$R)f z*4t}G#3uu7p05}v^&4xC$XAxo_PNIWBH6Fuub8u_k{zWtT4Etx0y#PrprXY3rm*US z>Gbi*(b3U}ZAKeAR3Gf!D3`RcNmT++Y2*BVFF5e~Kd?W^IE4n>G*k56DFla^u?4E+ I%=v4-0uzRu+5i9m diff --git a/en/python-net/developer-guide/presentation-content/manage-text/manage-autofit-settings/shrinktextonoverflow-setting-powerpoint.png b/en/python-net/developer-guide/presentation-content/manage-text/manage-autofit-settings/shrinktextonoverflow-setting-powerpoint.png index 4a2a9e200d7b26b134a9f9ddf2ebff2f2b2c444b..4bd737e6fdcb8f821fa7b2a42555a74e7549f12d 100644 GIT binary patch literal 34116 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 literal 34701 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 G-~JEQ%*n$5 literal 57372 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ⅆ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 Date: Fri, 15 Aug 2025 13:46:25 +0600 Subject: [PATCH 08/10] SLIDESDOC-627 Update article text to improve time to read Updated the article "Manage SmartArt Graphics in Presentations Using Python". --- .../manage-smartart-shape/_index.md | 174 +++++++++--------- 1 file changed, 82 insertions(+), 92 deletions(-) diff --git a/en/python-net/developer-guide/presentation-content/powerpoint-smartart/manage-smartart-shape/_index.md b/en/python-net/developer-guide/presentation-content/powerpoint-smartart/manage-smartart-shape/_index.md index 5aec76899..a732c8e40 100644 --- a/en/python-net/developer-guide/presentation-content/powerpoint-smartart/manage-smartart-shape/_index.md +++ b/en/python-net/developer-guide/presentation-content/powerpoint-smartart/manage-smartart-shape/_index.md @@ -22,134 +22,124 @@ keywords: description: "Automate PowerPoint SmartArt creation, editing, and styling in Python via .NET using Aspose.Slides, featuring concise code examples and performance-focused guidance." --- -## **Create SmartArt Shape** -Aspose.Slides for Python via .NET now facilitates to add custom SmartArt shapes in their slides from scratch. Aspose.Slides for Python via .NET has provided the simplest API to create SmartArt shapes in an easiest way. To create a SmartArt shape in a slide, please follow the steps below: +## **Create SmartArt Shapes** -- Create an instance of [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. -- Obtain the reference of a slide by using its Index. -- Add a SmartArt shape by setting it LayoutType. -- Write the modified presentation as a PPTX file. +Aspose.Slides for Python via .NET allows you to add custom SmartArt shapes to slides from scratch. The API makes this easy. To add a SmartArt shape to a slide: + +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class. +1. Get the target slide by its index. +1. Add a SmartArt shape, specifying its layout type. +1. Save the modified presentation as a PPTX file. ```py import aspose.slides as slides -import aspose.slides.smartart as art - -# Instantiate the presentation -with slides.Presentation() as pres: - # Access the presentation slide - slide = pres.slides[0] - - # Add Smart Art Shape - smart = slide.shapes.add_smart_art(0, 0, 400, 400, art.SmartArtLayoutType.BASIC_BLOCK_LIST) - - # Saving presentation - pres.save("SimpleSmartArt_out.pptx", slides.export.SaveFormat.PPTX) +import aspose.slides.smartart as smartart + +# Instantiate the Presentation class. +with slides.Presentation() as presentation: + # Access the presentation slide. + slide = presentation.slides[0] + # Add a SmartArt shape. + smart_art = slide.shapes.add_smart_art(0, 0, 400, 400, smartart.SmartArtLayoutType.BASIC_BLOCK_LIST) + # Save the presentation to disk. + presentation.save("output.pptx", slides.export.SaveFormat.PPTX) ``` +## **Access SmartArt Shapes on Slides** - -## **Access SmartArt Shape in Slide** -The following code will be used to access the SmartArt shapes added in presentation slide. In sample code we will traverse through every shape inside the slide and check if it is a SmartArt shape. If shape is of SmartArt type then we will typecast that to SmartArt instance. +The following code demonstrates how to access SmartArt shapes on a slide. The sample iterates through each shape on the slide and checks whether it is a [SmartArt](https://reference.aspose.com/slides/python-net/aspose.slides.smartart/smartart/) object. ```py import aspose.slides as slides -import aspose.slides.smartart as art - -# Load the desired the presentation -with slides.Presentation(path + "SmartArt.pptx") as pres: +import aspose.slides.smartart as smartart - # Traverse through every shape inside first slide - for shape in pres.slides[0].shapes: - # Check if shape is of SmartArt type - if type(shape) is art.SmartArt: - # Typecast shape to SmartArtEx - print("Shape Name:" + shape.name) +# Load a presentation file. +with slides.Presentation("SmartArt.pptx") as presentation: + # Iterate through every shape on the first slide. + for shape in presentation.slides[0].shapes: + # Check whether the shape is a SmartArt shape. + if isinstance(shape, smartart.SmartArt): + # Print the shape name. + print("Shape name:", shape.name) ``` +## **Access SmartArt Shapes with a Specified Layout Type** +The following example shows how to access a SmartArt shape with a specified layout type. Note that you cannot change a SmartArt’s layout type—it’s read-only and is set when the shape is created. -## **Access SmartArt Shape with Particular Layout Type** -The following sample code will help to access the SmartArt shape with particular LayoutType. Please note that you cannot change the LayoutType of the SmartArt as it is read only and is set only when the SmartArt shape is added. - -- Create an instance of `Presentation` class and load the presentation with SmartArt Shape. -- Obtain the reference of first slide by using its Index. -- Traverse through every shape inside first slide. -- Check if shape is of SmartArt type and Typecast selected shape to SmartArt if it is SmartArt. -- Check the SmartArt shape with particular LayoutType and perform what is required to be done afterwards. +1. Create a [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) instance and load the presentation that contains the SmartArt shape. +1. Get a reference to the first slide by index. +1. Iterate over every shape on the first slide. +1. Check whether the shape is a [SmartArt](https://reference.aspose.com/slides/python-net/aspose.slides.smartart/smartart/) object. +1. If the SmartArt shape’s layout type matches the one you need, perform the required actions. ```py import aspose.slides as slides -import aspose.slides.smartart as art +import aspose.slides.smartart as smartart -with slides.Presentation(path + "SmartArt.pptx") as presentation: - # Traverse through every shape inside first slide +with slides.Presentation("SmartArt.pptx") as presentation: + # Iterate through every shape on the first slide. for shape in presentation.slides[0].shapes: - # Check if shape is of SmartArt type - if type(shape) is art.SmartArt: - # Checking SmartArt Layout - if shape.layout == art.SmartArtLayoutType.BASIC_BLOCK_LIST: - print("Do some thing here....") + # Check whether the shape is a SmartArt shape. + if isinstance(shape, smartart.SmartArt): + # Check the SmartArt layout type. + if shape.layout == smartart.SmartArtLayoutType.BASIC_BLOCK_LIST: + print("Do something here...") ``` +## **Change the SmartArt Shape Style** +The following example shows how to locate SmartArt shapes and change their style: -## **Change SmartArt Shape Style** -The following sample code will help to access the SmartArt shape with particular LayoutType. - -- Create an instance of `Presentation` class and load the presentation with SmartArt Shape. -- Obtain the reference of first slide by using its Index. -- Traverse through every shape inside first slide. -- Check if shape is of SmartArt type and Typecast selected shape to SmartArt if it is SmartArt. -- Find the SmartArt shape with particular Style. -- Set the new Style for the SmartArt shape. -- Save the Presentation. +1. Create a [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) and load the file that contains the SmartArt shape(s). +1. Get a reference to the first slide by index. +1. Iterate over each shape on the first slide. +1. Find the SmartArt shape with the specified style. +1. Assign the new style to the SmartArt shape. +1. Save the presentation. ```py import aspose.slides as slides -import aspose.slides.smartart as art +import aspose.slides.smartart as smartart -with slides.Presentation(path + "SmartArt.pptx") as presentation: - # Traverse through every shape inside first slide +with slides.Presentation("SmartArt.pptx") as presentation: + # Iterate through every shape on the first slide. for shape in presentation.slides[0].shapes: - # Check if shape is of SmartArt type - if type(shape) is art.SmartArt: - # Checking SmartArt style - if shape.quick_style == art.SmartArtQuickStyleType.SIMPLE_FILL: - # Changing SmartArt Style - smart.quick_style = art.SmartArtQuickStyleType.CARTOON - - # Saving Presentation - presentation.save("ChangeSmartArtStyle_out.pptx", slides.export.SaveFormat.PPTX) + # Check whether the shape is a SmartArt shape. + if isinstance(shape, smartart.SmartArt): + # Check the SmartArt style. + if shape.quick_style == smartart.SmartArtQuickStyleType.SIMPLE_FILL: + # Change the SmartArt style. + smart.quick_style = smartart.SmartArtQuickStyleType.CARTOON + # Save the presentation. + presentation.save("output.pptx", slides.export.SaveFormat.PPTX) ``` +## **Change the Color Style of SmartArt Shapes** +This example shows how to change the color style of a SmartArt shape. The sample code locates a SmartArt shape with a specified color style and updates it. -## **Change SmartArt Shape Color Style** -In this example, we will learn to change the color style for any SmartArt shape. In the following sample code will access the SmartArt shape with particular color style and will change its style. - -- Create an instance of `Presentation` class and load the presentation with SmartArt Shape. -- Obtain the reference of first slide by using its Index. -- Traverse through every shape inside first slide. -- Check if shape is of SmartArt type and Typecast selected shape to SmartArt if it is SmartArt. -- Find the SmartArt shape with particular Color Style. -- Set the new Color Style for the SmartArt shape. -- Save the Presentation. +1. Create an instance of the [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class and load the presentation that contains the SmartArt shape(s). +1. Get a reference to the first slide by index. +1. Iterate over each shape on the first slide. +1. Check whether the shape is a [SmartArt](https://reference.aspose.com/slides/python-net/aspose.slides.smartart/smartart/) object. +1. Locate the SmartArt shape with the specified color style. +1. Set the new color style for that SmartArt shape. +1. Save the presentation. ```py import aspose.slides as slides -import aspose.slides.smartart as art +import aspose.slides.smartart as smartart -with slides.Presentation(path + "SmartArt.pptx") as presentation: - # Traverse through every shape inside first slide +with slides.Presentation("SmartArt.pptx") as presentation: + # Iterate through every shape on the first slide. for shape in presentation.slides[0].shapes: - # Check if shape is of SmartArt type - if type(shape) is art.SmartArt: - # Checking SmartArt color type - if shape.color_style == art.SmartArtColorType.COLORED_FILL_ACCENT1: - # Changing SmartArt color type - shape.color_style = art.SmartArtColorType.COLORFUL_ACCENT_COLORS - - # Saving Presentation - presentation.save("ChangeSmartArtColorStyle_out.pptx", slides.export.SaveFormat.PPTX) + # Check whether the shape is a SmartArt shape. + if isinstance(shape, smartart.SmartArt): + # Check the color type. + if shape.color_style == smartart.SmartArtColorType.COLORED_FILL_ACCENT1: + # Change the color type. + shape.color_style = smartart.SmartArtColorType.COLORFUL_ACCENT_COLORS + # Save the presentation. + presentation.save("output.pptx", slides.export.SaveFormat.PPTX) ``` - From 0993fdc21361f0ca9be1a84ed63c8db71fdba5fb Mon Sep 17 00:00:00 2001 From: Andrey Potapov <77686740+andreypotapovaspose@users.noreply.github.com> Date: Fri, 15 Aug 2025 18:08:32 +0600 Subject: [PATCH 09/10] SLIDESDOC-627 Update article text to improve time to read Updated the article "Licensing". --- .../getting-started/licensing/_index.md | 79 +++++++++---------- 1 file changed, 37 insertions(+), 42 deletions(-) diff --git a/en/python-net/getting-started/licensing/_index.md b/en/python-net/getting-started/licensing/_index.md index 94af1c095..a35265109 100644 --- a/en/python-net/getting-started/licensing/_index.md +++ b/en/python-net/getting-started/licensing/_index.md @@ -18,43 +18,38 @@ description: "Learn how to apply, manage, and troubleshoot licenses in Aspose.Sl ## **Evaluate Aspose.Slides** -{{% alert color="primary" %}} +You can download an evaluation version of **Aspose.Slides for Python via .NET** from its [download page](https://pypi.org/project/Aspose.Slides/). The evaluation version provides the same features as the licensed product. The evaluation package is identical to the purchased package and becomes licensed after you add a few lines of code to apply the license. -You can download an evaluation version of **Aspose.Slides for Python via .NET** from its [download page](https://pypi.org/project/Aspose.Slides/). The evaluation version provides the same functionalities as the licensed version of the product. The evaluation package is the same as the purchased package. The evaluation version simply becomes licensed after you add a few lines of code to it (to apply the license). +When you’re satisfied with your evaluation of **Aspose.Slides**, you can [purchase a license](https://purchase.aspose.com/buy). We recommend reviewing the available subscription options. If you have questions, contact the Aspose sales team. -Once you are happy with your evaluation of **Aspose.Slides**, you can [purchase a license](https://purchase.aspose.com/buy). We recommend you go through the different subscription types. If you have questions, contact the Aspose sales team. +Every Aspose license includes a one-year subscription with free upgrades to new versions and fixes released during that period. Both licensed and evaluation users receive free, unlimited technical support. -Every Aspose license comes with one-year subscription for free upgrades to new versions or fixes released within the subscription period. Users with licensed products or even evaluation versions get free and unlimited technical support. +**Limitations of the Evaluation Version** -{{% /alert %}} +* While the Aspose.Slides evaluation version (when no license is applied) provides full functionality, it adds an evaluation watermark at the top of the document whenever you open or save it. +* When extracting text from a presentation, you are limited to one slide. -**Evaluation version limitations** - -* While Aspose.Slides evaluation version (without a license specified) provides full product functionality, it inserts an evaluation watermark at the top of the document on open and save operations. -* You are limited to one slide when extracting texts from presentation slides. - -{{% alert color="primary" %}} +{{% alert color="primary" %}} -To test Aspose.Slides without limitations, you can ask for a **30-Day Temporary License**. See the [How to get a Temporary License](https://purchase.aspose.com/temporary-license) page for more information. +To test Aspose.Slides without limitations, you can request a **30-day Temporary License**. See the [How to Get a Temporary License](https://purchase.aspose.com/temporary-license) page for details. {{% /alert %}} ## **Licensing in Aspose.Slides** -* An evaluation version becomes licensed after you purchase a license and add a couple of lines of code to it (to apply the license). -* The license is a plain-text XML file that contains details such as the product name, number of developers it is licensed to, subscription expiry date, and so on. -* The license file is digitally signed, so you must not modify the file. Even an inadvertent addition of an extra line break to the contents of the file will invalidate it. -* Aspose.Slides for Python via .NET typically tries to find the license in these locations: - * An explicit path - * The folder containing the Python script that calls Aspose.Slides for Python via .NET -* To avoid the limitations associated with the evaluation version, you need to set a license before using Aspose.Slides. You only have to set a license once per application or process. - -{{% alert color="primary" %}} +* An evaluation version becomes licensed after you purchase a license and add a couple of lines of code to apply it. +* The license is a plain-text XML file that contains details such as the product name, the number of developers it covers, the subscription expiry date, and so on. +* The license file is digitally signed, so you must not modify it. Even adding a single line break will invalidate it. +* Aspose.Slides for Python via .NET typically looks for the license in these locations: + * An explicit path you provide + * The folder that contains the Python script that calls Aspose.Slides for Python via .NET +* To avoid the evaluation limitations, set the license before using Aspose.Slides. You only need to set it once per application or process. -You may want to see [Metered Licensing](/slides/python-net/metered-licensing/). +{{% alert color="primary" %}} -{{% /alert %}} +You may also want to review [Metered Licensing](/slides/python-net/metered-licensing/). +{{% /alert %}} ## **Applying a License** @@ -62,11 +57,11 @@ A license can be loaded from a **file**, **stream**, or **embedded resource**. {{% alert color="primary" %}} -Aspose.Slides provides the [License](https://reference.aspose.com/slides/python-net/aspose.slides/license/) class for licensing operations. +Aspose.Slides provides the [License](https://reference.aspose.com/slides/python-net/aspose.slides/license/) class to handle licensing. -{{% /alert %}} +{{% /alert %}} -{{% alert color="warning" %}} +{{% alert color="warning" %}} New licenses can activate Aspose.Slides only with version 21.4 or later. Earlier versions use a different licensing system and will not recognize these licenses. @@ -74,47 +69,47 @@ New licenses can activate Aspose.Slides only with version 21.4 or later. Earlier ### **File** -The easiest method of setting a license requires you to place the license file in the same folder containing the component's DLL (included in Aspose.Slides) and specify the file name without its path. +The easiest way to set a license is to place the license file in the same folder as the component’s DLL and specify only the file name (without a path). -This Python code shows you how to set a license file: +The following Python code shows how to set the license file: -``` python +```py import aspose.slides as slides -# Instantiates the License class +# Instantiates the License class. license = slides.License() -# Sets the license file path +# Sets the license file path. license.set_license("Aspose.Slides.lic") ``` -{{% alert color="warning" %}} +{{% alert color="warning" %}} -If you place the license file in a different directory, when you call the [License.set_license()](https://reference.aspose.com/slides/python-net/aspose.slides/license/) method, the license file name at the end of the specified explicit must be the same as your license file. +If you place the license file in a different directory, when you call [License.set_license()](https://reference.aspose.com/slides/python-net/aspose.slides/license/set_license/#str), the file name at the end of the explicit path must match your license file’s name. -For example, you can change the license file name to *Aspose.Slides.lic.xml*. Then, in your code, you have to pass the path to the file (ending with *Aspose.Slides.lic.xml*) to the [License.set_license()](https://reference.aspose.com/slides/python-net/aspose.slides/license/) method. +For example, you can rename the license file to *Aspose.Slides.lic.xml*. Then, in your code, pass the full path to that file (ending with Aspose.Slides.lic.xml) to the [License.set_license()](https://reference.aspose.com/slides/python-net/aspose.slides/license/set_license/#str) method. {{% /alert %}} ### **Stream** -You can load a license from a stream. This Python code shows you how to apply a license from a stream: +You can load a license from a stream. The following Python example shows how to apply a license from a stream: -``` python +```py import aspose.slides as slides -# Instantiates the License class +# Instantiates the License class. license = slides.License() -#Sets the license through a stream +# Set the license from a stream. license.set_license(stream) ``` ## **Validating a License** -To check whether a license has been set properly, you can validate it. This Python code shows you how to validate a license: +To verify that the license has been applied correctly, you can validate it. The following Python code demonstrates how to validate a license: -```python +```py import aspose.slides as slides license = slides.License() @@ -127,8 +122,8 @@ if license.is_licensed(): ## **Thread Safety** -{{% alert title="Note" color="warning" %}} +{{% alert title="Note" color="warning" %}} -The [License.set_license()](https://reference.aspose.com/slides/python-net/aspose.slides/license/) method is not thread safe. If this method has to be called simultaneously from many threads, you may want to use synchronization primitives (like a lock) to avoid issues. +The [License.set_license](https://reference.aspose.com/slides/python-net/aspose.slides/license/) methods are not thread-safe. If it needs to be called concurrently from multiple threads, use synchronization primitives (e.g., `threading.Lock`) to avoid issues. {{% /alert %}} From 8b6aae6e3b027a794b74c25e31f75ac5699cc2b5 Mon Sep 17 00:00:00 2001 From: Andrey Potapov <77686740+andreypotapovaspose@users.noreply.github.com> Date: Fri, 15 Aug 2025 19:51:25 +0600 Subject: [PATCH 10/10] SLIDESDOC-627 Update article text to improve time to read Updated the article "Advanced Text Extraction from PowerPoint Presentations in Python". --- .../extract-text-from-presentation/_index.md | 151 ++++++++---------- 1 file changed, 70 insertions(+), 81 deletions(-) diff --git a/en/python-net/developer-guide/presentation-content/manage-text/extract-text-from-presentation/_index.md b/en/python-net/developer-guide/presentation-content/manage-text/extract-text-from-presentation/_index.md index 266c739cc..5ca355297 100644 --- a/en/python-net/developer-guide/presentation-content/manage-text/extract-text-from-presentation/_index.md +++ b/en/python-net/developer-guide/presentation-content/manage-text/extract-text-from-presentation/_index.md @@ -29,117 +29,106 @@ keywords: description: "Learn how to quickly and easily extract text from PowerPoint presentations using Aspose.Slides for Python via .NET. Follow our simple, step-by-step guide to save time and efficiently access slide content in your applications." --- -{{% alert color="primary" %}} +## **Overview** -It's not uncommon that developers need to extract the text from a presentation. To do so, you need to extract text from all the shapes on all the slides in a presentation. This article explains how to extract text from Microsoft PowerPoint PPTX presentations using Aspose.Slides. Text can be extracted in following ways: +It’s common for developers to need to extract text from a presentation. To do this, you must pull text from every shape on every slide. This article explains how to extract text from Microsoft PowerPoint (PPTX) presentations using Aspose.Slides. Text can be extracted in the following ways: -- [Extracting text from one slide](/slides/python-net/extracting-text-from-the-presentation/) -- [Extracting text using GetAllTextBoxes method](/slides/python-net/extracting-text-from-the-presentation/) -- [Categorized and fast extraction of text](/slides/python-net/extracting-text-from-the-presentation/) +- Extracting text from a slide +- Extracting text from a presentation +- Categorized and fast text extraction + +## **Extract Text from a Slide** -{{% /alert %}} -## **Extract Text from Slide** -Aspose.Slides for Python via .NET provides the Aspose.Slides.Util namespace which includes the SlideUtil class. This class exposes a number of overloaded static methods for extracting the entire text from a presentation or slide. To extract the text from a slide in a PPTX presentation, -use the [GetAllTextBoxes](https://reference.aspose.com/slides/python-net/aspose.slides.util/slideutil/) overloaded static method exposed by the SlideUtil class. This method accepts the Slide object as a parameter. -Upon execution, the Slide method scans the entire text from the slide passed as parameter and returns an array of TextFrame objects. This means that any text formatting associated with the text is available. The following piece of code extracts all the text on the first slide of the presentation: +Aspose.Slides for Python via .NET provides the [aspose.slides.util](https://reference.aspose.com/slides/python-net/aspose.slides.util/) namespace, which includes the [SlideUtil](https://reference.aspose.com/slides/python-net/aspose.slides.util/slideutil/) class. [SlideUtil](https://reference.aspose.com/slides/python-net/aspose.slides.util/slideutil/) exposes several overloaded static methods for extracting text from an entire presentation or a single slide. To extract text from a slide in a PPTX, use the `get_all_text_boxes` method. It takes a [Slide](https://reference.aspose.com/slides/python-net/aspose.slides/slide/) object, scans the slide for text, and returns an array of [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/) objects—so the text and its formatting are preserved. The code below extracts all text from the first slide of the presentation: ```py import aspose.slides as slides -#Instatiate Presentation class that represents a PPTX file -with slides.Presentation("pres.pptx") as pptxPresentation: - # Get an Array of ITextFrame objects from all slides in the PPTX - textFramesPPTX = slides.util.SlideUtil.get_all_text_boxes(pptxPresentation.slides[0]) - - # Loop through the Array of TextFrames - for i in range(len(textFramesPPTX)): - # Loop through paragraphs in current ITextFrame - for para in textFramesPPTX[i].paragraphs: - # Loop through portions in the current IParagraph - for port in para.portions: - # Display text in the current portion - print(port.text) - - # Display font height of the text - print(port.portion_format.font_height) - - # Display font name of the text - if port.portion_format.latin_font != None: - print(port.portion_format.latin_font.font_name) +# Instantiate the Presentation class that represents a PPTX file. +with slides.Presentation("sample.pptx") as presentation: + slide = presentation.slides[0] + # Get an array of TextFrame objects from all slides in the PPTX file. + text_frames = slides.util.SlideUtil.get_all_text_boxes(slide) + # Loop through the array of the text frames. + for text_frame in text_frames: + # Loop through paragraphs in the current text frame. + for paragraph in text_frame.paragraphs: + # Loop through text portions in the current paragraph. + for portion in paragraph.portions: + # Display the text in the current portion. + print(portion.text) + # Display the font height of the text. + print(portion.portion_format.font_height) + # Display the font name of the text. + if portion.portion_format.latin_font is not None: + print(portion.portion_format.latin_font.font_name) ``` +## **Extract Text from a Presentation** +To extract text from an entire presentation, use the `get_all_text_frames` static method of the [SlideUtil](https://reference.aspose.com/slides/python-net/aspose.slides.util/slideutil/) class. It takes two parameters: +1. A [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) object representing the PPTX to extract from. +1. A `Boolean` indicating whether to include the master slides. -## **Extract Text from Presentation** -To scan the text from the whole presentation, use the - [GetAllTextFrames](https://reference.aspose.com/slides/python-net/aspose.slides.util/slideutil/) static method exposed by the SlideUtil class. It takes two parameters: - -1. First, a Presentation object that represents the PPTX presentation the text is being extracted from. -1. Second, a Boolean value determining whether the master slide is to be included when the text is scanned from the presentation. - The method returns an array of TextFrame objects, complete with text formatting information. The code below scans the text and formatting information from a presentation, including the master slides. +The method returns an array of [TextFrame](https://reference.aspose.com/slides/python-net/aspose.slides/textframe/) objects with their formatting. The example below scans the text and formatting from a presentation, including the master slides. ```py import aspose.slides as slides -#Instatiate Presentation class that represents a PPTX file -with slides.Presentation("pres.pptx") as pptxPresentation: - # Get an Array of ITextFrame objects from all slides in the PPTX - textFramesPPTX = slides.util.SlideUtil.get_all_text_frames(pptxPresentation, True) - - # Loop through the Array of TextFrames - for i in range(len(textFramesPPTX)): - # Loop through paragraphs in current ITextFrame - for para in textFramesPPTX[i].paragraphs: - # Loop through portions in the current IParagraph - for port in para.portions: - # Display text in the current portion - print(port.text) - - # Display font height of the text - print(port.portion_format.font_height) - - # Display font name of the text - if port.portion_format.latin_font != None: - print(port.portion_format.latin_font.font_name) +# Instantiate the Presentation class that represents a PPTX file. +with slides.Presentation("pres.pptx") as presentation: + # Get an array of TextFrame objects from all slides in the PPTX file. + text_frames = slides.util.SlideUtil.get_all_text_frames(presentation, True) + # Loop through the array of text frames. + for text_frame in text_frames: + # Loop through paragraphs in the current text frame. + for paragraph in text_frame.paragraphs: + # Loop through text portions in the current paragraph. + for portion in paragraph.portions: + # Display text in the current portion. + print(portion.text) + # Display the font height of the text. + print(portion.portion_format.font_height) + # Display the font name of the text. + if portion.portion_format.latin_font is not None: + print(portion.portion_format.latin_font.font_name) ``` - - - ## **Categorized and Fast Text Extraction** -The new static method GetPresentationText has been added to Presentation class. There are two overloads for this method: + +The [Presentation](https://reference.aspose.com/slides/python-net/aspose.slides/presentation/) class provides a static method, `get_presentation_text`, with these overloads: ```py -slides.Presentation.get_presentation_text(stream) -slides.Presentation.get_presentation_text(stream, mode) +Presentation.get_presentation_text(stream, mode) +Presentation.get_presentation_text(file, mode) +Presentation.get_presentation_text(stream, mode, options) ``` -The ExtractionMode enum argument indicates the mode to organize the output of text result and can be set to the following values: -Unarranged - The raw text with no respect to position on the slide -Arranged - The text is positioned in the same order as on the slide +The [TextExtractionArrangingMode](https://reference.aspose.com/slides/python-net/aspose.slides/textextractionarrangingmode/) argument controls how the extracted text is organized: -Unarranged mode can be used when speed is critical, it's faster than Arranged mode. +- `UNARRANGED` — raw text with no regard to on-slide position. +- `ARRANGED` — text appears in the same order as on the slide. -PresentationText represents the raw text extracted from the presentation. It contains a `slides_text` property from Aspose.Slides.Util namespace which returns an array of SlideText objects. Every object represent the text on the corresponding slide. SlideText object have the following properties: +Use `UNARRANGED` when speed is critical; it is faster than `ARRANGED`. -SlideText.text - The text on the slide's shapes -SlideText.master_text - The text on the master page's shapes for this slide -SlideText.layout_text - The text on the layout page's shapes for this slide -SlideText.notes_text - The text on the notes page's shapes for this slide +[PresentationText](https://reference.aspose.com/slides/python-net/aspose.slides/presentationtext/) represents the raw text extracted from a presentation. It exposes the `slides_text` property, which returns an array of `SlideText` objects—each corresponding to a slide. A `SlideText` object has the following properties: +- `SlideText.text` — text from the slide’s shapes +- `SlideText.master_text` — text from the master page’s shapes for that slide +- `SlideText.layout_text` — text from the layout page’s shapes for that slide +- `SlideText.notes_text` — text from the notes page’s shapes for that slide -The new API can be used like this: +Here’s how to use the API: ```py import aspose.slides as slides -text1 = slides.PresentationFactory().get_presentation_text("pres.pptx", slides.TextExtractionArrangingMode.UNARRANGED) -print(text1.slides_text[0].text) -print(text1.slides_text[0].layout_text) -print(text1.slides_text[0].master_text) -print(text1.slides_text[0].notes_text) +arranging_mode = slides.TextExtractionArrangingMode.UNARRANGED +presentation_text = slides.PresentationFactory().get_presentation_text("sample.pptx", arranging_mode) +slide_text = presentation_text.slides_text[0] +print(slide_text.text) +print(slide_text.layout_text) +print(slide_text.master_text) +print(slide_text.notes_text) ``` - - -