LibreOffice Writer macro to save all the images in the document to separate files. Filenames are automatically generated from image name/ID. All images are created in user/Pictures
directory by default.
Copy following code snippet into clipboard.
Sub SaveIMGs ' Save all images in the document to .png files ' in user's %HOME%/Pictures directory Dim MP(1) As New com.sun.star.beans.PropertyValue Dim oDoc As Object Dim oGraphics As Object Dim oProv As Object Dim oImg As Object oProv = createUnoService("com.sun.star.graphic.GraphicProvider") oDoc = ThisComponent oGraphics = oDoc.getGraphicObjects() hd = Environ("HOMEPATH") If InStr(hd, "\") > 0 Then 'Windows hd = "/C:" + join(split(hd, "\"), "/") ELSE 'Linux/MacOS hd = Environ("HOME") End If If hd = "" Then MsgBox "ERROR: Cannot locate user's home directory!" Else For Each oImg in oGraphics MP(0).Name = "URL" MP(0).Value = "file://" & hd & "/Pictures/" & oImg.Name & ".png" MP(1).Name = "MimeType" MP(1).Value = "image/png" oProv.storeGraphic(oImg.Graphic, MP) Next End If End Sub
Tools
-> Macros
-> Edit macros
(note: macros must be enabled, this is not the default in LibreOffice!)My Macros & Dialogs
-> Standard
-> Module1
Main
code blockSub SaveIMGs
" is created.Tools -> Macros -> Run Macro...
SaveIMGs
and click Run
user/Pictures
directory by default.This macro is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This macro is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Copy of the GNU General Public License is availabel at: http://www.gnu.org/licenses/
Published date: 03 Sep 2020.