有没有任何 Linux 工具可以从 Powerpoint pptx 文件中提取文本?我尝试了 catppt,但它只返回file.pptx is not OLE file or Error
。 abiword --to=txt file.pptx
还返回一个空文本文件。
我可以在 libreoffice 中打开该文件,但它似乎没有“导出为文本”选项。我猜我也试过了,libreoffice --headless --convert-to txt:Text file.pptx
但那甚至没有返回一个空文件。
答案1
如果您可以处理中的文件bash
,则此行代码将解压所有文本:
unzip -qc "$1" ppt/slides/slide*.xml | grep -oP '(?<=\<a:t\>).*?(?=\</a:t\>)'
只需将 pptx 文件作为 传递给它$1
,它就会将文本写入文件$2
。每张幻灯片的内容不会按演示顺序显示,也不会有标签或任何内容,因此您需要多几行脚本和一个临时目录来获得更易读的列表。
答案2
由于您已经安装了 Abiword,您可以先制作一个 PDF
libreoffice --headless --convert-to pdf filename.pptx
然后使用 abiword 将 pdf 转换为 txt
abiword --to=txt filename.pdf
答案3
如果在文件名末尾添加 .zip(即Presentation1.pptx.zip
),那么您可以解压缩该文档并查看其各个组件。
在此生成的 zip 文件中,有以下目录\Presentation1.pptx.zip\ppt\slides
。此目录包含以每张幻灯片命名的 .xml 文件。如果您打开其中一个文件,您将看到任何输入的文本都包裹在<a:t>
标签中。
例如:<a:t>TEST</a:t>
这就是我能帮助你的最大限度,但希望这足够了。
编辑:附注:同样的过程也适用于 Word 文档。如果您需要从 Word 文档中提取图像,它非常有用。
答案4
您可以尝试将 ppt 文件保存为 pdf 格式,然后使用 pdftotext 检索现有文本。当然,嵌入在图形中的所有文本都将永远丢失。
或者,您可以尝试命令
string filename
在 ppt 或 pdf 上。