Python pptx как изменить шрифт

Поменять шрифт pptx Python Решение и ответ на вопрос 2639646

edyaqq

0 / 0 / 0

Регистрация: 25.04.2020

Сообщений: 49

1

10.05.2020, 20:35. Показов 5375. Ответов 2

Метки нет (Все метки)


Вот мой код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
from pptx import Presentation
 
prs = Presentation()
 
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = "Random.seed"
subtitle.text = "seed(a=None, version=2) method of random." 
                "Random instance Initialize internal state from hashable objec" 
                "t." 
                " None or no argument seeds from current time or from an operati" 
                "ng sys" 
                "tem specific randomness source if available." 
                " If *a* is an int, all bits are used. For version 2 (the defau" 
                "lt), al" 
                "l of the bits are used if *a* is a str, bytes," 
                " or bytearray.  For version 1 (provided for reproducing random " 
                "sequenc" 
                "es from older versions of Python), the algorithm " 
                "for str and bytes generates a narrower range of seeds."
 
title_slide_layout1 = prs.slide_layouts[0]
slide1 = prs.slides.add_slide(title_slide_layout)
title1 = slide1.shapes.title
subtitle1 = slide1.placeholders[1]
title1.text = "Random.shuffle"
subtitle1.text = "shuffle(x, random=None) method of random.Random instanceShuffle " 
                 "list x in place," 
                 " and return None.Optional argument random is a 0-argument functi" 
                 "on returning" 
                 " arandom float in [0.0, 1.0); if it is the default None, thesta" 
                 "ndard random.ra" 
                 "ndom will be used."
 
title_slide_layout2 = prs.slide_layouts[0]
slide2 = prs.slides.add_slide(title_slide_layout)
title2 = slide2.shapes.title
subtitle2 = slide2.placeholders[1]
title2.text = "Random.expovariate"
subtitle2.text = "expovariate(lambd) method of random." 
                 "Random instanceExponential distribution." 
                 " lambd is 1.0 divided by the desired mean." 
                 "It should be nonzero." 
                 "(The parameter would be called ""'lambda'""," 
                 " but that is a reserved word in Python.)  Returned " 
                 "values range from 0 to    positive infinity if lambd is" 
                 " positive, and from negative    infinity to 0 if lambd is negative."
 
title_slide_layout3 = prs.slide_layouts[0]
slide3 = prs.slides.add_slide(title_slide_layout)
title3 = slide3.shapes.title
subtitle3 = slide3.placeholders[1]
title3.text = "Random.lognormvariate"
subtitle3.text = "lognormvariate(mu, sigma) method of random.Random instance" 
                 "Log normal distribution.   If you take the natural logarithm " 
                 "of this distribution, you'll get a    normal distribution with " 
                 "mean mu and standard deviation sigma.mu can have any value, and" 
                 " sigma must be greater than zero"
 
title_slide_layout4 = prs.slide_layouts[0]
slide4 = prs.slides.add_slide(title_slide_layout)
title4 = slide4.shapes.title
subtitle4 = slide4.placeholders[1]
title4.text = "Random.vonmisesvariate"
subtitle4.text = "vonmisesvariate(mu, kappa) method of random." 
                 "Random instanceCircular data distribution.mu is" 
                 " the mean angle, expressed in radians between 0 " 
                 "and 2*pi, andkappa is the concentration parameter," 
                 " which must be greater than orequal to zero.  If kappa" 
                 " is equal to zero, this distribution reducesto a uniform " 
                 "random angle over the range 0 to 2*pi."
 
prs.save('res.pptx')

Нужно поменять шрифт на Courier New, как это сделать?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

10.05.2020, 20:35

Ответы с готовыми решениями:

Поменять шрифт в матлаб 13
здравствуйте:), не могу найти где можно поменять шрифт command window в матлабе 13

Как поменять шрифт
Как поменять размер шрифта в С?

Добавлено через 17 минут
Это вообще возможно???

Как поменять шрифт?
Когда набираю текст то получаются тип переменные, если нажать пробел то, будет Normal шрифт…

Как поменять шрифт?
вопрос созрел, а как поменять шрифт в меню там? и шрифт названия…

2

Заклинатель змей

611 / 508 / 213

Регистрация: 30.04.2016

Сообщений: 2,412

10.05.2020, 23:30

2

edyaqq, поменять где? Что программа получает на вход и что должна вернуть?

Добавлено через 1 минуту
edyaqq, а, понял, в этой простыне текста, которая представляет собой презентация. Документацию к либе уже читали?



0



814 / 526 / 214

Регистрация: 22.12.2017

Сообщений: 1,495

11.05.2020, 07:25

3



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

11.05.2020, 07:25

3

#python #python-pptx

Вопрос:

pptx** Сообщество!

Не могли бы вы, пожалуйста, подсказать мне, является ли приведенный ниже метод правильным подходом к форматированию текста?

Другими словами, должен ли я добавлять: p , run , и все свойства шрифта в каждый текст, который я добавляю в PPTX?

Большое вам спасибо за вашу помощь!

 from pptx import Presentation
from pptx.dml.color import RGBColor
from pptx.enum.dml import MSO_THEME_COLOR
from pptx.enum.shapes import MSO_SHAPE
from pptx.enum.text import MSO_ANCHOR, MSO_AUTO_SIZE
from pptx.util import Inches, Pt

prs = Presentation('./data/template.pptx')

cover = prs.slides.add_slide(prs.slide_layouts[0])

pptTitle_Shape = cover.shapes.add_textbox(Inches(0.31), Inches(0.54), 0.61, 9.38)
pptTitle_TextFrame = pptTitle_Shape.text_frame
p = pptTitle_TextFrame.paragraphs[0]
run = p.add_run()
run.text = 'Cover Page Title Name'
font = run.font
font.name = 'Arial'
font.size = Pt(40)
font.bold = False
font.color.rgb = RGBColor(255, 255, 255)

pptCustomerName_Shape = cover.shapes.add_textbox(Inches(0.31), Inches(2.03), 4.5, 0.4)
pptCustomerName_TextFrame = pptCustomerName_Shape.text_frame
p = pptCustomerName_TextFrame.paragraphs[0]
run = p.add_run()
run.text = 'Customer Name'
font = run.font
font.name = 'Arial'
font.size = Pt(28)
font.bold = False
font.color.rgb = RGBColor(255, 255, 255)

pptSEName_Shape = cover.shapes.add_textbox(Inches(0.31), Inches(2.51), 4.5, 0.4)
pptSEName_TextFrame = pptSEName_Shape.text_frame
p = pptSEName_TextFrame.paragraphs[0]
run = p.add_run()
run.text = 'FirstName LName'
font = run.font
font.name = 'Arial'
font.size = Pt(20)
font.bold = False
font.color.rgb = RGBColor(255, 255, 255)
 

Ответ №1:

Чтобы дополнить ответ Сканни, я создал набор функций для применения форматирования к нескольким различным объектам python-pptx . Функции довольно длинные, поскольку они реализуют все типы форматирования, такие как выравнивание шрифтов, цвета границ, прозрачность, поля и т.д. Но вы можете найти их в следующей сути: https://gist.github.com/Fredericco72/c21505ebfb354461bc4b7b857764d5d2

Они напрямую соответствуют логике, предоставляемой Scanny, но это позволяет вам делать следующее:

 slide = prs.slides.add_slide(prs.slide_layouts[0])

shape = slide.shapes.add_shape(
    MSO_SHAPE.RECTANGLE,
    left=Cm(1),
    top=Cm(1),
    width=Cm(10),
    height=Cm(3)
)

format_shape(
    shape,
    fill_color="BLUE",
    border_color="RED"
)

format_text_frame(
    shape.text_frame,
    font_size=15,
    font_color="WHITE",
    font_align=PP_ALIGN.RIGHT
)
 

Чтобы вы могли использовать понятные названия для таких цветов, как BLUE «и RED «, вам нужно настроить файл сопоставления, или вы можете просто пройти fill_color=RGBColor(255, 255, 255) .

Комментарии:

1. Отлично! Спасибо, @Fred.

Ответ №2:

Нет, как правило, нет. Есть несколько ярлыков, и значения по умолчанию должны работать нормально большую часть времени.

Типичная операция добавления формы выглядит следующим образом:

 shape = shapes.add_shape(...)
shape.text = "foobar"
 

Нет необходимости явно обращаться к текстовому фрейму для добавления текста, форма, которая принимает текст, обладает .text свойством записи.

В общем, шрифт по умолчанию (форматирование символов) будет работать нормально. Это включает в себя выполнение работы в стартовом файле «шаблон» .pptx, чтобы установить по умолчанию то, что вы хотите для большей части текста. Эти значения по умолчанию будут установлены на уровне темы и презентации по умолчанию, а также в заполнителях на макетах слайдов. Обычно вы делаете это вручную, используя PowerPoint, так как это делается один раз за шаблон, а не один раз за сгенерированную презентацию.

Возможно, наиболее распространенной «настройкой» было бы изменение размера шрифта для определенной формы. Это было бы:

 shape.text_frame.paragraphs[0].font.size = Pt(12)
 

Если вы обнаружите, что делаете это чаще, чем иногда, вы можете запустить некоторые полезные функции:

 def shape_set_font_size(shape, points):
    for paragraph in shape.text_frame.paragraphs:
        paragraph.font.size = Pt(points)

shape_set_font_size(shape, 12)
shape_set_font_size(shape_2, 18)
 

Каждый _Run объект имеет шрифт и определенный непрерывный интервал («прогон») символов, включая, возможно, нулевые символы («»). Все символы в запуске имеют один и тот же шрифт, и любые настройки, которые вы задаете на этом уровне, переопределяют любые настройки на более высоких уровнях, которые в противном случае могли бы быть «унаследованы».

У каждого _Paragraph объекта также есть .font свойство, но это шрифт по умолчанию для запусков внутри этого абзаца. Эти характеристики шрифта будут применяться, за исключением случаев, когда запуск переопределяет их настройкой на своем уровне.

Так что правильный поступок в какой-то степени зависит от ситуации. Например, если вы использовали следующее, вы обязательно установите шрифт для всего текста, находящегося в данный момент в абзаце, но не для добавляемого нового текста (который получает новые прогоны).:

 def shape_set_font_size(shape, points):
    for paragraph in shape.text_frame.paragraphs:
        for run in paragraph.runs:
            run.font.size = Pt(points)
 

Я рекомендую вам избегать _Run шрифта уровня, за исключением случаев, когда вы хотите подчеркнуть какое-то конкретное слово или фразу, скажем, выделив ее жирным шрифтом или курсивом. В противном _Paragraph случае-уровень работает нормально и является более гибким.

Комментарии:

1. Это потрясающе! Огромное спасибо.

Я хочу изменить размер шрифта и стиль шрифта заголовка слайда. Я также хочу подчеркнуть название. Как это сделать?

from pptx import Presentation

prs = Presentation(ppt_filename)

slide = prs.slides[0]
slide.shapes.title.text = 'New Title'
slide.shapes.title.top = 100
slide.shapes.title.left = 100
slide.shapes.title.height = 200

2 ответа

Это может быть немного хакерским, но это работает.

Согласно документам, вы можете получить доступ к text_frame форма заполнителя заголовка.
Благодаря этому вы можете получить Paragraph объекты в этом фрейме с paragraphs атрибут. В elements здесь вы можете видеть, что фигура-заполнитель title находится в первом индексе (если он существует).

Теперь мы можем получить Font используется в абзаце, и измените его различные атрибуты следующим образом:

from pptx import Presentation
from pptx.util import Pt

prs = Presentation(ppt_filename)

slide = prs.slides[0]
slide.shapes.title.text = 'New Title'
slide.shapes.title.top = 100
slide.shapes.title.left = 100
slide.shapes.title.height = 200

title_para = slide.shapes.title.text_frame.paragraphs[0]

title_para.font.name = "Comic Sans MS"
title_para.font.size = Pt(72)
title_para.font.underline = True

Дополнительные ссылки:

  • text.Font — Дополнительные атрибуты шрифта, которые вы можете редактировать.
  • util.Pt — Настройка размера шрифта.


2

Diggy.
20 Янв 2021 в 14:27

Для применения стиля шрифта:

slide.shapes.title.font.name = 'Calibri'

Для изменения размера шрифта:

from pptx.util import Pt
slide.shapes.title.font.size = Pt(20)


1

frab
20 Янв 2021 в 14:06

Improve Article

Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    python-pptx is library used to create/edit a PowerPoint (.pptx) files. This won’t work on MS office 2003 and previous versions.  We can add shapes, paragraphs, texts and slides and much more thing using this library.

    Installation: Open the command prompt on your system and write given below command:

    pip install python-pptx
    

    Let’s see some of its usage:

    Example 1: Creating new PowerPoint file with title and subtitle slide.

    Python3

    from pptx import Presentation     

    root = Presentation()

    first_slide_layout = root.slide_layouts[0

    slide = root.slides.add_slide(first_slide_layout)

    slide.shapes.title.text = " Created By python-pptx"

    slide.placeholders[1].text = " This is 2nd way"

    root.save("Output.pptx")

    print("done")

    Output:

    Adding title and subtitle to the powerpoint

    Example 2: Adding Text-Box in PowerPoint.

    Python3

    from pptx import Presentation 

    from pptx.util import Inches, Pt

    ppt = Presentation() 

    blank_slide_layout = ppt.slide_layouts[6

    slide = ppt.slides.add_slide(blank_slide_layout)

    left = top = width = height = Inches(1

    txBox = slide.shapes.add_textbox(left, top,

                                     width, height)

    tf = txBox.text_frame

    tf.text = "This is text inside a textbox"

    p = tf.add_paragraph() 

    p.text = "This is a second paragraph that's bold and italic" 

    p.font.bold = True

    p.font.italic = True

    p = tf.add_paragraph()

    p.text = "This is a third paragraph that's big " 

    p.font.size = Pt(40)

    ppt.save('test_2.pptx')

    print("done")

    Output:

    Adding text box to the powerpoint

    Example 3: PowerPoint (.pptx) file to Text (.txt) file conversion.

    Python3

    from pptx import Presentation

    ppt = Presentation("sample.pptx")

    File_to_write_data = open("File_To_Extract_ppt.txt", "w")

    for slide in ppt.slides: 

        for shape in slide.shapes: 

            if not shape.has_text_frame: 

                continue 

            for paragraph in shape.text_frame.paragraphs: 

                for run in paragraph.runs: 

                    File_to_write_data.write(run.text)

    File_to_write_data.close()

    print("Done")

    Output:

    Example 4: Inserting image into the PowerPoint file.

    Python3

    from pptx import Presentation 

    from pptx.util import Inches 

    img_path = 'bg_bg.png' 

    ppt = Presentation() 

    blank_slide_layout = ppt.slide_layouts[6

    slide = ppt.slides.add_slide(blank_slide_layout) 

    left = top = Inches(1

    pic = slide.shapes.add_picture(img_path,

                                   left, top)

    left = Inches(1

    height = Inches(1

    pic = slide.shapes.add_picture(img_path, left,

                                   top, height = height)

    ppt.save('test_4.pptx')

    print("Done")

    Output:

    Adding images to the powerpoint

    Example 5: Adding Charts to the PowerPoint file.

    Python3

    from pptx import Presentation 

    from pptx.chart.data import CategoryChartData 

    from pptx.enum.chart import XL_CHART_TYPE 

    from pptx.util import Inches

    ppt = Presentation() 

    slide = ppt.slides.add_slide(ppt.slide_layouts[6])

    chart_data = CategoryChartData() 

    chart_data.categories = ['East', 'West', 'Midwest']  

    chart_data.add_series('Series 1'

                          (int(input("Enter Value:")), 

                            int(input("Enter Value:")),

                            int(input("Enter Value:")))) 

    x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5

    slide.shapes.add_chart( XL_CHART_TYPE.COLUMN_CLUSTERED, x,

                           y, cx, cy, chart_data )

    ppt.save('chart-Tutorial.pptx')

    print("done")

    Output:

    Adding charts to the powerpoint

    Example 6: Adding tables to the PowerPoint file.

    Python3

    from pptx import Presentation 

    from pptx.util import Inches

    ppt = Presentation() 

    slide = ppt.slides.add_slide(ppt.slide_layouts[6])

    x, y, cx, cy = Inches(2), Inches(2), Inches(4), Inches(1.5

    shape = slide.shapes.add_table(3, 4, x, 

                                   y, cx, cy)

    ppt.save("Tabel_Tutorial.pptx")

    print("done")

    Output:

    Adding table to the powerpoint

    Понравилась статья? Поделить с друзьями:
  • Python pickle memory error
  • Python parameter error
  • Python pandas memory error
  • Python overflowerror math range error
  • Python oserror errno 8 exec format error