Ubuntu 12.04
我想从 LibreOffice Writer 中的文档中删除所有图像。我的文档包含约 350 张图片。有没有办法删除它们集体而不是一个接一个地?我尝试取消选中“工具”>“选项”>“LibreOffice Writer”>“视图”>“显示”>“图形和对象”。但占位符仍然可见。
编辑:我知道如何将页面保存为纯文本文件,但我需要在文档中进行格式化。
答案1
您还可以使用 LibreOffice 中的短宏来删除文档中的所有图像:
Sub RemoveImages
Dim oDoc as Object
oDoc = ThisComponent
Dim oGraphics as Object
oGraphics = oDoc.getGraphicObjects()
Dim oImg as Object
For Each oImg in oGraphics
oDoc.getText().removeTextContent(oImg)
Next
End Sub
此示例还可以修改为改变图像的属性(例如使它们全部具有统一的大小)以及处理形状对象等。
创建宏
LibreOffice 提供了 Basic 语言以及 IDE 来创建、调试、存储和运行代码。
要打开宏对话框,请使用Alt+F11或从菜单中工具>宏>组织宏>LibreOffice 基础版
代码位于模块,分为库。您可以创建自己的,但对于大多数用途,您可以使用内置的我的宏库和内置模块1。
打开宏对话框后,突出显示模块1并按编辑. 这将打开 IDE。
代码分为 Subs 和 Functions。借用 VBA,Functions 用于返回值,而 Subs 不返回值。您可以在 Main 下方的任何位置定义自己的 subs 和 function。因此,要使用此代码删除图像,只需将其粘贴到模块中即可。
使用宏
您可以直接从 IDE 运行代码,方法是单击要运行的 Sub 中的任意位置并按F5。(函数会返回值,因此需要从 Sub 中调用。)您还可以使用对话框按钮或菜单来运行代码。IDE 包含一个集成调试器,这在编写新代码时至关重要。
下次打开宏对话框时,您将看到子宏被列为宏,然后无需打开 IDE 即可运行。还可以将单个宏分配给菜单或工具栏项。
笔记:此宏将在活动文档上运行。从菜单或宏对话框运行宏时,可以假定这是您刚刚按下按钮的文档;但是当使用 IDE 创建、运行或调试代码时,请确保您没有将另一个文档设为活动文档。
LibreOffice 基础版
LibreOffice Basic 与 VBA 非常相似,但这种相似性也可能具有欺骗性,因为对象模型完全不同并且语法也存在许多差异。
例如,在 VBA 中,一旦您引用了图像对象,该图像对象就会有一个删除方法。在这里,对象具有或继承的方法很少。要删除图像对象,您可以使用结构和语法与基于浏览器的 DOM 非常相似的文档元素。
LibreOffice 帮助中包含 LibreOffice Basic 入门链接。
答案2
我假设文档的文本已格式化,并且保存为纯文本并不理想。在这种情况下,可以采取一种稍长的方法:
创建一个临时文件夹。
在 LibreOffice 中正常打开文档。
选择
Save As
并在此处选择HTML Document (Writer) (.html)
作为格式。Save as html
另外,指定目标的临时文件夹并为建议的 html 文件指定一个合适的名称。在下一个屏幕中同意而不是 odt 格式。
关闭 LibreOffice。
打开上面创建的临时文件夹。您应该看到一html 文件和一堆图像。
- 如果不再需要这些图像,请删除它们。
然后,
.html
在适当的文本编辑器中打开该文件,删除那些如果留下来会导致文档出现空白的标签。- 例如,在 Geany 中,我使用
<IMG SRC="[^>]+>
搜索表达式,但在“替换为”框中没有任何内容。
- 例如,在 Geany 中,我使用
- 保存 .html 文件。现在,在浏览器甚至 LibreOffice 中查看时,将没有图像、没有占位符,只有格式化的文本。
编辑:不使用基于 GUI 的文本编辑器,假设一个在相关文件夹中,并且这cli.html
是在 LibreOffice 中保存时给出的名称html
,则可以这样使用命令行:
perl -p -i.bak -e 's/<IMG[^>]+>//g' cli.html
cli.html.bak
创建一个备份文件,以防万一……
答案3
您可以通过鼠标选择文档中的一张图片,然后按Ctrl + A选择当前工作表中的所有图片,然后Del按 删除它们。