Ошибка доступа к заполнителю изображения python -pptx после .insert_picture () - PullRequest
1 голос
/ 29 марта 2020

Я использую python -pptx для добавления изображения в заполнитель изображения. Затем я хотел бы переместить заполнитель, но когда я использовал что-то вроде placeholder.left, которое должно возвращать позицию левого конца заполнителя, я получаю ошибку en. Когда я делаю это непосредственно перед добавлением изображения, оно работает нормально ....) Вот оно:

print("pic placeholder left - before inserting picture\n"+str(pic_placeholder.left))
print("\nListing plaseholders - before inserting picture")
for shape in ppt_slide.placeholders:
    print('%d----%s' % (shape.placeholder_format.idx, shape.name))
pic_placeholder = ppt_slide.placeholders[1]
picture = pic_placeholder.insert_picture(s.figures[0].file_name)
print("\nListing plaseholders - after inserting picture")
for shape in ppt_slide.placeholders:
    print('%d----%s' % (shape.placeholder_format.idx, shape.name))
print("pic placeholder left - after inserting 
picture\n"+str(pic_placeholder.left))

А вот вывод (посмотрите, где он останавливается):

2020-03-29 08:18:33 Listing plaseholders - before inserting picture
2020-03-29 08:18:33 
2020-03-29 08:18:33 0----Title 1
2020-03-29 08:18:33 1----Picture Placeholder 2
2020-03-29 08:18:33 2----Text Placeholder 3
2020-03-29 08:18:33 Listing plaseholders - after inserting picture
2020-03-29 08:18:33 
2020-03-29 08:18:33 0----Title 1
2020-03-29 08:18:33 1----Picture Placeholder 2
2020-03-29 08:18:33 2----Text Placeholder 3

И здесь происходит сбой из-за ошибки, которую вы увидите в журнале ошибок:

2020-03-29 08:18:33,171: AttributeError: 'NoneType' object has no
attribute 'x' 2020-03-29 08:18:33,171:   File
"/home/karrot/.virtualenvs/my-virtualenv/lib/python3.5/site-packages/flask/app.py",
line 2463, in __call__ 2020-03-29 08:18:33,171:     return
self.wsgi_app(environ, start_response) 2020-03-29 08:18:33,171: 
2020-03-29 08:18:33,171:   File
"/home/karrot/.virtualenvs/my-virtualenv/lib/python3.5/site-packages/flask/app.py",
line 2449, in wsgi_app 2020-03-29 08:18:33,171:     response =
self.handle_exception(e) 2020-03-29 08:18:33,172:  2020-03-29
08:18:33,172:   File
"/home/karrot/.virtualenvs/my-virtualenv/lib/python3.5/site-packages/flask/app.py",
line 1866, in handle_exception 2020-03-29 08:18:33,172:    
reraise(exc_type, exc_value, tb) 2020-03-29 08:18:33,172:  2020-03-29
08:18:33,172:   File
"/home/karrot/.virtualenvs/my-virtualenv/lib/python3.5/site-packages/flask/_compat.py",
line 39, in reraise 2020-03-29 08:18:33,172:     raise value
2020-03-29 08:18:33,172:  2020-03-29 08:18:33,172:   File
"/home/karrot/.virtualenvs/my-virtualenv/lib/python3.5/site-packages/flask/app.py",
line 2446, in wsgi_app 2020-03-29 08:18:33,172:     response =
self.full_dispatch_request() 2020-03-29 08:18:33,172:  2020-03-29
08:18:33,172:   File
"/home/karrot/.virtualenvs/my-virtualenv/lib/python3.5/site-packages/flask/app.py",
line 1951, in full_dispatch_request 2020-03-29 08:18:33,172:     rv =
self.handle_user_exception(e) 2020-03-29 08:18:33,173:  2020-03-29
08:18:33,173:   File
"/home/karrot/.virtualenvs/my-virtualenv/lib/python3.5/site-packages/flask/app.py",
line 1820, in handle_user_exception 2020-03-29 08:18:33,173:  
reraise(exc_type, exc_value, tb) 2020-03-29 08:18:33,173:  2020-03-29
08:18:33,173:   File
"/home/karrot/.virtualenvs/my-virtualenv/lib/python3.5/site-packages/flask/_compat.py",
line 39, in reraise 2020-03-29 08:18:33,173:     raise value
2020-03-29 08:18:33,173:  2020-03-29 08:18:33,173:   File
"/home/karrot/.virtualenvs/my-virtualenv/lib/python3.5/site-packages/flask/app.py",
line 1949, in full_dispatch_request 2020-03-29 08:18:33,173:     rv =
self.dispatch_request() 2020-03-29 08:18:33,173:  2020-03-29
08:18:33,173:   File
"/home/karrot/.virtualenvs/my-virtualenv/lib/python3.5/site-packages/flask/app.py",
line 1935, in dispatch_request 2020-03-29 08:18:33,173:     return
self.view_functions[rule.endpoint](**req.view_args) 2020-03-29
08:18:33,173:  2020-03-29 08:18:33,174:   File
"/home/karrot/mysite/flask_app.py", line 26, in index 2020-03-29
08:18:33,174:     rpg.PG03m(str(pippo[0])) 2020-03-29 08:18:33,174: 
2020-03-29 08:18:33,174:   File
"/home/karrot/mysite/PresentationGenerator09min_method.py", line 324,
in PG03m 2020-03-29 08:18:33,174:     temp_ppt=P1.make_ppt()
2020-03-29 08:18:33,174:  2020-03-29 08:18:33,174:   File
"/home/karrot/mysite/PresentationGenerator09min_method.py", line 229,
in make_ppt

Заранее спасибо и позаботьтесь !!! Корона там! JT

1 Ответ

0 голосов
/ 29 марта 2020

Вставка изображения в заполнитель изображения фактически удаляет форму заполнителя и вставляет форму изображения. Это также способ, которым сама PowerPoint делает это; форма-заполнитель является элементом <p:sp>, тогда как изображение является элементом * 1002. * PicturePlaceholder.insert_picture() для манипуляции с новой формой после вставки.

picture = pic_placeholder.insert_picture(s.figures[0].file_name)
print("picture left - after inserting picture\n%s" % picture.left)
...