无法将文本翻译为单元格或pptx中某些表格内的其他语言

时间:2018-09-22 18:53:13

标签: python python-pptx

无法在pptx的单元格或某些表格中将文本翻译成德语。但是,幻灯片中的简单文字正在得到翻译。

我的输入pptx如下所示: enter image description here

获得如下输出:Hello World等未得到翻译。

enter image description here

我正在使用的代码如下:

prs = Presentation('old.pptx')
for slide in prs.slides: 
    for shape in slide.shapes: 
        if not shape.has_text_frame: 
            continue
        text_frame = shape.text_frame
        text_frame.text=translator.translate(text_frame.text,dest='de').text



prs.save('new.pptx')

可以对上述代码进行调整,以便对所有内部pptx进行翻译吗? 我可以理解它在寻找文本框架,但是有没有机会对此进行调整? 如果我从上面的代码中删除以下内容,则会出现错误...

   if not shape.has_text_frame: 
            continue

AttributeError:“图片”对象没有属性“ text_frame”

我浏览了python-pptx文档,发现有一些用于char,table,picture等的函数,但无法弄清楚如何通过它进行翻译,以便可以翻译其中的文本。 参考链接-https://python-pptx.readthedocs.io/en/latest/

1 个答案:

答案 0 :(得分:1)

您将需要分别迭代任何表的单元格,如下所示:

def iter_cells(table):
    """Generate each cell in *table*, left-to-right, top-to-bottom."""
    for row in table.rows:
        for cell in row.cells:
            yield cell

def translate_table(table):
    for cell in iter_cells(table):
        text_frame = cell.text_frame
        text_frame.text = translator.translate(text_frame.text, dest='de').text

for shape in slide.shapes:
    if shape.has_table:
        translate_table(shape.table)
    if not shape.has_text_frame:
        continue
    ...

请注意,表格本身并不是形状。而是由GraphicFrame形状包含。

在图片问题上,并非所有形状都可以包含文本。图片形状就是其中一种,这就是为什么在尝试访问它没有(也不能)拥有的TextFrame对象之前必须先跳过它。