我正在 Libre 办公室创建一些文档,并且我必须始终以 的形式发送它们.pdf
。
但每次我都忘记将其导出为 pdf,那么有什么办法可以在每次保存文档时自动将.odt
文档转换为 pdf 吗?pdf
我只有大约 4 个文档,我不断对它们进行更改,因此每次我进行更改并保存时,odt
我都需要在相应的 pdf 文件中更新该更改。
附言:我知道unoconv
可以通过命令行进行转换,但是有没有办法自动完成转换?
另一个 Ps:我发现有一种名为 inotify 和 inotify-tools 的东西,可用于在文件更改时触发事件。但我不知道如何使用它。
答案1
尝试此扩展(与 Gnome-Shell/Quantal 上的 LibreOffice 配合良好):
MultiSave 使您能够同时以您选择的 OpenDocument、MS Office 和/或 PDF 格式保存文档。
多格式保存是 MultiSave 的一个新更新分支,旨在与 Libreoffice 的最新修订版更好地配合使用:
MultiFormatSave 可让您同时以 OpenDocument、MS Office 和/或 PDF 格式保存文档,供 Writer、Calc 或 Impress 使用
从 starXpert MultiSave 扩展中分叉
确保选择适合您的 LibreOffice 版本的版本,例如1.3.2适用于 LO 3.5 和 3.6。
答案2
使用来自 pyinotify 项目 [http://github.com/seb-m/pyinotify] 的代码的一个快速而粗略的示例
您需要将 WATCHED_DIR 更改为包含 ODT 文件的目录。另外请记住先安装 unoconv。
# Notifier example from tutorial
#
# See: http://github.com/seb-m/pyinotify/wiki/Tutorial
#
# odtwatcher.py
import os
import pyinotify
import subprocess
WATCHED_DIR = '/tmp/test'
wm = pyinotify.WatchManager() # Watch Manager
mask = pyinotify.IN_MODIFY
class EventHandler(pyinotify.ProcessEvent):
def process_IN_MODIFY(self, event):
fname = event.pathname
if os.path.splitext(fname)[1] == '.odt':
print 'MODIFIED: ', fname
args = ['unoconv', '-f', 'pdf', fname]
try:
subprocess.Popen(args)
except OSError as e:
print 'Could not convert file %s to PDF. Error %s' % (fname, str(e))
if __name__ == '__main__':
handler = EventHandler()
notifier = pyinotify.Notifier(wm, handler)
wdd = wm.add_watch(WATCHED_DIR, mask, rec=True)
notifier.loop()
将其保存为 odtwatcher.py 然后在后台运行
python odtwatcher.py &
答案3
您还可以从命令行运行 libreoffice 来实现您的目的。这为您提供了批量转换的优势,但单个文件也是可能的。此示例将当前目录中的所有 ODT 文件转换为 PDF:
libreoffice --headless --convert-to pdf *.odt
使用以下命令获取有关命令行选项的更多信息:
man libreoffice
答案4
这篇文章解释了如何使用 CUPS 从命令行非常简单地将 odt 转换为 pdf。
http://www.yamamoto.com.ar/blog/?p=50
您实际上可以从一个目录将所有 odt 批量转换为 pdf,这样实际上可以节省您每次都记住导出为 pdf 的时间!
希望这可以帮助!