Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python pptx中指定用于fit_文本的字体时出错_Python_Python Pptx - Fatal编程技术网

在python pptx中指定用于fit_文本的字体时出错

在python pptx中指定用于fit_文本的字体时出错,python,python-pptx,Python,Python Pptx,我用python创建了一个程序,用excel表格中的数据替换ppt文本框中的文本,然后保存pptx并创建保存ppt的PDF。 我使用了python pptx库来实现这一点。我想让它自动调整字体大小,所以我使用了fit_文本 shape.text=name1 text_frame = shape.text_frame text_frame.fit_text(font_family=u'Montserrat-Medium', max_size=24, bold=False, italic=False

我用python创建了一个程序,用excel表格中的数据替换ppt文本框中的文本,然后保存pptx并创建保存ppt的PDF。
我使用了python pptx库来实现这一点。我想让它自动调整字体大小,所以我使用了fit_文本

shape.text=name1
text_frame = shape.text_frame
text_frame.fit_text(font_family=u'Montserrat-Medium', max_size=24, bold=False, italic=False, font_file=None)
text_frame.auto_size = None
我已经在我的电脑上安装了上述字体,就我对文档的理解而言,它应该很好用。 但当我运行它时,我遇到以下错误:

Traceback (most recent call last):
  File "c:/Rudr875/PPTtoPDF/certs.py", line 45, in <module>
    text_frame.fit_text(font_family=u'Montserrat Medium', max_size=24, bold=False, italic=False, font_file=None)      
  File "C:\Python\lib\site-packages\pptx\text\text.py", line 88, in fit_text
    font_size = self._best_fit_font_size(
  File "C:\Python\lib\site-packages\pptx\text\text.py", line 242, in _best_fit_font_size
    font_file = FontFiles.find(family, bold, italic)
  File "C:\Python\lib\site-packages\pptx\text\fonts.py", line 32, in find
    return cls._font_files[(family_name, is_bold, is_italic)]
KeyError: ('Montserrat Medium', False, False)
回溯(最近一次呼叫最后一次):
文件“c:/Rudr875/PPTtoPDF/certs.py”,第45行,在
text\u frame.fit\u text(font\u family=u'Montserrat Medium',max\u size=24,bold=False,italic=False,font\u file=None)
文件“C:\Python\lib\site packages\pptx\text\text.py”,第88行,格式为fit\u text
font\u size=self.\u最适合\u font\u size(
文件“C:\Python\lib\site packages\pptx\text\text.py”,第242行,字体大小为“最佳”
font_file=FontFiles.find(家族、粗体、斜体)
文件“C:\Python\lib\site packages\pptx\text\fonts.py”,第32行,在find中
返回cls.\u字体\u文件[(家族名称,粗体,斜体)]
KeyError:(“蒙特塞拉特中等”,False,False)
请帮忙,先谢谢你

更新-与Windows一起预装的所有字体(如Arial、Calibri等)都正常工作。只有后来安装的字体(如Montserrat、Poppins等)不正常工作。)


更新2-如果我提供字体文件的绝对路径,那么它可以工作。但是如果字体文件路径为none值,它将再次显示错误。)

在“蒙特塞拉特介质”或u-unicode修饰符中有破折号吗?错误告诉您在字典中找不到键
蒙特塞拉特介质
,因此您的
u“蒙特塞拉特介质”
被翻译成
蒙特塞拉特介质
?谢谢您的回复@Ronald。我会检查并更新您。@Ronald t他-不起作用。我还尝试删除unicode修饰符,但也没有任何帮助。我检查了字体名称是否正确。很难说。我没有安装pptx包。可能错误消息提供了进一步的线索:
文件“C:\Python\lib\site packages\pptx\text\fonts.py”,第32行,在find
?其他字体正在工作?@Ronald Calibri和Arial正在工作。我不知道为什么蒙特塞拉特不工作,即使我安装了完整的系列。有些东西在“Montserrat Medium”中带有破折号或u-unicode修饰符?错误告诉您在字典中找不到键
Montserrat Medium
,所以你的
u'Montserrat-Medium'
如何被翻译成
Montserrat-Medium
?谢谢你的回复@Ronald。我会检查并更新你。@Ronald删除-无效。我也尝试删除unicode修饰符,但也没有任何帮助。我检查了字体名称是否正确。很难说。我没有pptx软件包已安装。可能错误消息提供了进一步的线索:
文件“C:\Python\lib\site packages\pptx\text\font.py”,第32行,在find
中?其他字体正在工作?@Ronald Calibri和Arial正在工作。我不知道为什么蒙特塞拉特没有,即使我已经安装了完整的系列。