На данный момент мне нужно получить фактическую ширину текста, лучшее решение, которое я пробовал, - найти первую строку текста и получить ее ширину. Представленные мне презентации были сделаны разными людьми, и я не могу напрямую на них повлиять. И оказывается, что сама рамка формы в презентации часто намного шире, чем текст, что является проблемой, потому что мне нужно получить видимые коллизии формы текста, которые возможны только тогда, когда у меня есть настоящий кадр текста (пытался показать его в screenshot1 , screenshot2 )
Моя лучшая попытка получить настоящую первую строку:
# i have already compiled PIL font, with font typeface and size named "font"
# width of shape and text of shape
# and also class TextWrapper that wraps given string with given width and outputs a list
# get first line from wrapped text, and from tuple select width
width_first = font.getsize(TextWrapper(shape.text, font, width).text_lines[0])[0]
# get lines that wrapped at width first string
wrapped_lines = TextWrapper(shape.text, font, width_first).text_lines
# ... some calculations here
Проблема в том, что символ переноса похож на ' \ n 'не всегда в тексте, но в презентации я вижу эту обертку.
Я пытался объяснить, как я мог, кто-нибудь сталкивался с этим вообще?
РЕДАКТИРОВАТЬ:
Я нашел способ сделать то, что мне нужно. Если вам нужно что-то равное, см. Код.
import win32com.client
Application = win32com.client.Dispatch("PowerPoint.Application")
# WithWindow=False forces PowerPoint to do not open the PowerPoint Window
Presentation = Application.Presentations.Open("ABCPATH/to/presentation.pptx",
WithWindow=False)
for Slide in Presentation.Slides:
for Shape in Slide.Shapes:
if Shape.HasTextFrame: # checks if shape has text, becouse we avoiding imgs
# that what we need
first_line = Shape.TextFrame.TextRange.Lines(1, 1)
Вы должны установить приложение PowerPoint для этого и установить pywin32. И оно работает только на Windows, так что это не очень хороший выбор, но для меня он отлично работает
Может быть, кто-то нашел это пригодным для использования