使用LibreOffice通过命令行将.xls转换为.pdf

我试图通过Ubuntu上的命令行使用LibreOffice将.xls文件转换为.pdf 。 在单元格背景中有一些颜色的.xls文件。

问题是当我转换.xls文件时, .pdf丢失了原始格式。 每个页面几乎被打破了一个页面的内容显示在两个不同的页面。

  • 有谁知道如何通过命令行将.xls文件转换为.pdf保持原始格式?
  • 或者一些诀窍来设置.pdf页面的大小不中断页面? (也通过命令行)

我用来进行转换的代码是:

 soffice --headless --convert-to pdf:"impress_pdf_Export" filename.xls 

如果您使用LibreOffice将Microsoft Excel(XLS)文件转换为PDF文档,则这是一个两步骤的过程(即使您的命令看起来像是一个一步的过程):

  1. 将XLS导入LibreOffice(即使以--headless )。
  2. 从LibreOffice导出PDF。

如果结果看起来不像您期望的(与Excel的本地PDF导出不相似),那么从debugging上面的第一步开始:

  • 在GUI中使用LibreOffice打开XLS文件。 它看起来像你期望它看起来? 或者是一些格式选项看起来不可思议?

    从那里导出PDF(使用GUI)。 你期望的页面尺寸? 你有没有设置你喜欢的? 像你想要的边缘? etc.pp. …


如果您正在使用Windows,则可能还需要考虑OfficeToPDF.exe 。 它被托pipe在CodePlex上,并获得了Apache 2.0许可证,并以二进制和源代码forms提供。

它需要安装Office 2013,Office 2010 Office 2007。 但是,它可以命令行和批量转换为PDF各种基于MS Office的文件格式,包括XLS(X),PPT(X),DOC(X),VSD(X)和PUB以及基于Libre / OpenOffice ODT,ODS和ODC文件。

虽然这与最初的问题有点相似(如果你有Office套件和Windows机器,你不需要Office Libre)

我很欣赏库尔特提供的后续工作。 它促使我发布以下Gist提供了一些关于如何在for循环中使用.exe的明确说明。

https://gist.github.com/einsty/2189cae4175f619cff0f