如何在libreoffice 6.4中将pdf转换为docx?

时间:2020-08-26 08:11:54

标签: docker libreoffice libreoffice-writer

我在ubuntu 18.04容器中安装了libreoffice 6.4。

目标是将pdf文件转换为docx。

我已经尝试过这些命令:

libreoffice --headless --convert-to docx:"Microsoft Word 2007/2010/2013 XML" /pdf/pdf.pdf --outdir /pdf

libreoffice --headless --convert-to docx:"Microsoft Word 2007-2013 XML" /pdf/pdf.pdf --outdir /pdf

libreoffice --headless --convert-to docx:"MS Word 2007 XML" /pdf/pdf.pdf --outdir /pdf

libreoffice --headless --convert-to docx:writer_MS_Word_97 /pdf/pdf.pdf --outdir /pdf

libreoffice --headless --convert-to "docx:writer_MS_Word_2007" /pdf/pdf.pdf --outdir /pdf

libreoffice --headless --convert-to docx:writer_OOXML /pdf/pdf.pdf --outdir /pdf

libreoffice --headless --convert-to doc /pdf/pdf.pdf --outdir /pdf

libreoffice --headless --convert-to "docx:writer_MS_Word_2007" --outdir /pdf pdf.pdf

但是他们总是返回此消息:

convert /pdf/pdf.pdf -> /pdf/pdf.docx using filter : writer_MS_Word_2007
Overwriting: /pdf/pdf.docx
Error: Please verify input parameters... (SfxBaseModel::impl_store <file:///pdf/pdf.docx> failed: 0x81a(Error Area:Io Class:Parameter Code:26))

任何人都可以给我一点线索吗?


更新:

我尝试了此命令:

libreoffice --infilter="writer_pdf_import" --convert-to docx  --outdir /pdf /pdf/pdf.pdf

它返回了此消息:

convert /pdf/pdf.pdf -> /pdf/pdf.docx using filter : Office Open XML Text
Overwriting: /pdf/pdf.docx

我看到它需要--infilter--参数,因为输入文件是pdf。

但是,它正在使用Office Open XML Text过滤器,我需要将其切换为Microsoft Word 2007-2013 XML,我该怎么做?

我已经尝试过这些并且不能正常工作:

libreoffice --infilter="writer_pdf_import" --convert-to docx:"Microsoft Word 2007-2013 XML"  --outdir /pdf /pdf/pdf.pdf

libreoffice --infilter="writer_pdf_import" --convert-to "docx:Microsoft Word 2007-2013 XML"  --outdir /pdf /pdf/pdf.pdf

libreoffice --infilter="writer_pdf_import" --convert-to "docx:writer_MS_Word_2007"  --outdir /pdf /pdf/pdf.pdf

libreoffice --infilter="writer_pdf_import" --convert-to docx:"writer_MS_Word_2007"  --outdir /pdf /pdf/pdf.pdf

libreoffice --infilter="writer_pdf_import" --convert-to docx:writer_MS_Word_2007  --outdir /pdf /pdf/pdf.pdf

他们总是返回此消息(与上面相同):

convert /pdf/pdf.pdf -> /pdf/pdf.docx using filter : writer_MS_Word_2007
Overwriting: /pdf/pdf.docx
Error: Please verify input parameters... (SfxBaseModel::impl_store <file:///pdf/pdf.docx> failed: 0x81a(Error Area:Io Class:Parameter Code:26))

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方法。

希望这对遇到相同问题的人有用。

我做了一个实验,通过尝试list中可能的单词过滤器一个接一个,成功尝试了4次。

libreoffice --headless --infilter="writer_pdf_import" --convert-to docx  --outdir /pdf /pdf/pdf.pdf

libreoffice --headless --infilter='writer_pdf_import' --convert-to docx:"MS Word 2007 XML" --outdir /pdf /pdf/pdf.pdf

libreoffice --headless --infilter='writer_pdf_import' --convert-to doc:"MS Word 2007 XML" --outdir /pdf /pdf/pdf.pdf

libreoffice --headless --infilter="writer_pdf_import" --convert-to doc  --outdir /pdf /pdf/pdf.pdf

但是在这4个命令之间,最后一个命令产生的效果最好,转换后的文档文件内容与原始文档类似,仅供参考,我的文档中有一些中文字符和表格,前三个命令未绘制表格边框正确,而最后一个边框正确。


更新:

我决定在ubuntu 18.04容器上安装libreoffice 7.0。

要查看过滤器的详细列表,请转到here,然后打开一个xcu文件,过滤器的详细信息应该在其中,要使用它,只需从name属性中选择,然后像这样使用它:

libreoffice --headless --infilter='writer_pdf_import' --convert-to doc:"<enter_filter_name_here>" --outdir /pdf /pdf/pdf.pdf