【发布时间】:2020-08-10 08:18:24
【问题描述】:
我经常需要使用 LibreOffice 将许多 (> 1000) 个 .docx 文档导出为 PDF。这是一个示例文档:test.docx。以下代码有效,但在 Windows 上运行速度很慢(每个 PDF 文档平均需要 3.3 秒):
import subprocess, docx, time # first do: pip install python-docx
for i in range(10):
doc = docx.Document('test.docx')
for paragraph in doc.paragraphs:
paragraph.text = paragraph.text.replace('{{num}}', str(i))
doc.save('test%i.docx' % i) # these 4 previous lines are super fast - a few ms
t0 = time.time()
subprocess.call(r'C:\Program Files\LibreOffice\program\soffice.exe --headless --convert-to pdf test%i.docx --outdir . --nocrashreport --nodefault --nofirststartwizard --nolockcheck --nologo --norestore"' % i)
print('PDF generated in %.1f sec' % (time.time()-t0))
# for linux:
# (0.54 seconds on average, so it's 6 times better than on Windows!)
# subprocess.call(['/usr/bin/soffice', '--headless', '--convert-to', 'pdf', '--outdir', '/home/user', 'test%i.docx' % i])
如何在 Windows 上加快 PDF 导出速度?
我怀疑很多时间会浪费在"Start LibreOffice/Writer, (do the job), Close LibreOffice" "Start LibreOffice/Writer, (do the job), Close LibreOffice" "Start LibreOffice/Writer, (do the job), Close LibreOffice" 等上。
注意事项:
作为比较:这里:https://bugs.documentfoundation.org/show_bug.cgi?id=92274 据说导出时间是 90 毫秒或 810 毫秒。
-
soffice.exe替换为swriter.exe:同样的问题:平均 3.3 秒subprocess.call(r'C:\Program Files\LibreOffice\program\swriter.exe --headless --convert-to pdf test%i.docx --outdir ."' % i)
【问题讨论】:
-
在 macOS 和 Linux 上相同
标签: python pdf docx libreoffice