如何自动导出OpenOffice/LibreOffice多页ODG绘图为带配置的位图?
自定义导出ODG文件为PNG的解决方案(LibreOffice/Apache OpenOffice)
一、命令行批量处理(无需扩展,自动化友好)
LibreOffice/Apache OpenOffice的无头模式支持直接通过命令行导出ODG,完全满足你的配置需求:
1. 导出指定页面
使用PageRange参数指定单页、连续页或不连续页:
# 导出第2页 soffice --headless --convert-to png:"draw_png_Export:PageRange=2" input.odg # 导出第1-3页 soffice --headless --convert-to png:"draw_png_Export:PageRange=1-3" input.odg # 导出第2、4、6页 soffice --headless --convert-to png:"draw_png_Export:PageRange=2,4,6" input.odg
2. 导出选中内容(含全选当前页)
如果需要导出特定选中内容,可通过宏实现,结合命令行调用:
- 打开LibreOffice Draw,录制或编写以下宏(保存到
Standard.Module1):
sub ExportSelectedAsPNG dim document as object dim dispatcher as object document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") ' 可选:全选当前页内容(如果需要导出整页) dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array()) ' 配置导出参数:输出路径、尺寸 dim args1(2) as new com.sun.star.beans.PropertyValue args1(0).Name = "URL" args1(0).Value = "file:///your/output/path/selected_output.png" args1(1).Name = "FilterName" args1(1).Value = "draw_png_Export" args1(2).Name = "FilterData" dim filterData(1) as new com.sun.star.beans.PropertyValue filterData(0).Name = "PixelWidth" filterData(0).Value = 1920 ' 自定义宽度 filterData(1).Name = "PixelHeight" filterData(1).Value = 1080 ' 自定义高度 args1(2).Value = filterData dispatcher.executeDispatch(document, ".uno:Export", "", 0, args1()) end sub
- 命令行调用宏导出:
soffice --headless --macro "Standard.Module1.ExportSelectedAsPNG" input.odg
3. 设置位图尺寸
直接在导出命令中通过PixelWidth/PixelHeight指定固定尺寸,或用ScaleX/ScaleY按比例缩放:
# 指定固定像素尺寸 soffice --headless --convert-to png:"draw_png_Export:PixelWidth=2000;PixelHeight=1500" input.odg # 按200%比例缩放 soffice --headless --convert-to png:"draw_png_Export:ScaleX=200;ScaleY=200" input.odg
二、图形界面扩展方案(适合手动操作)
安装LibreOffice官方扩展Export as Images,可直观配置所有需求:
- 支持选择导出页面范围(单页、自定义页列表)
- 可选择导出当前选中内容或整页
- 支持自定义PNG像素尺寸或缩放比例
- 支持批量处理多个ODG文件
安装后,打开ODG文件,通过菜单File > Export as Images打开配置面板,按需设置即可。
内容的提问来源于stack exchange,提问作者yury10578
相关产品推荐
相关产品推荐

