我想使用LibreOffice 6.1.3.2 10(Build:2)从Ubuntu 18终端将PDF转换为Microsoft (doc,docx) (实际上我使用LibreOffice执行LibreOffice)。但是我得到了大量的文本框文档,而不是普通的Word文档。
首先,为了理解我的问题,我建议在这里下载我的文件:https://nofile.io/f/DKvQYFRdYZg/pdf2word.rar
我有4份档案:
1.original.doc
2.original-to-pdf.pdf
3.pdf-to-word.doc
4.expected.doc
首先,我将original.pdf
转换为original-to-pdf.pdf
,然后尝试使用以下命令将其转换为Word:
soffice --infilter="writer_pdf_import" --convert-to docx a.pdf
文件创建是成功的,但所有内容都转换为文本框,而不是普通文档。然后,我尝试了几个PDF到Word转换器,如ilovepdf.com和我得到了expected.doc
您可以在上面的链接中下载我的文件,或者看到下面的图像,可以看到不同的内容。
我的产出:
ilovepdf产出:
我尝试了几个过滤器,包括pdf到odt,然后odt到word,但是下面的所有命令都没有给我预期的结果。
soffice --infilter="writer_pdf_import" --convert-to docx a.pdf
soffice --infilter="writer_pdf_import" --convert-to docx:"Microsoft Word 2007/2010/2013 XML" a.pdf
soffice --infilter="writer_pdf_import" --convert-to doc:"MS 2003 XML" a.pdf
soffice --infilter="writer_pdf_import" --convert-to doc a.pdf
soffice --infilter="writer_pdf_import" --convert-to odf:"writer8" a.pdf
soffice --infilter="writer8" --convert-to doc a.odf
soffice --infilter="writer_pdf_import" --convert-to doc:"MS Word 95" a.pdf
soffice --infilter="writer_pdf_import" --convert-to doc:"MS Word 97" a.pdf
soffice --infilter="writer_pdf_import" --convert-to doc:"StarOffice XML (Writer)" a.pdf
soffice --infilter="writer_pdf_import" --convert-to doc:"MS Word 2003 XML" a.pdf
soffice --infilter="writer_pdf_import" --convert-to docx:"MS Word 2003 XML" a.pdf
soffice --infilter="writer_pdf_import" --convert-to doc:"MS Word 2007 XML" a.pdf
soffice --infilter="writer_pdf_import" --convert-to doc:"MS Word 2003 XML" a.pdf
soffice --infilter="writer_pdf_import" --convert-to docx:"MS Word 2007 XML Template" a.pdf
soffice --infilter="writer_pdf_import" --convert-to docx:"MS Word 2007 XML" a.pdf
soffice --infilter="Microsoft Word 2007/2010/2013 XML" --convert-to doc a.pdf
我知道像abbyy cloud
或adobe cloud
这样的高级软件,但我不认为像ilovepdf这样的网站会使用付费服务来提供免费服务。我的问题是,我是否遗漏了一些LibreOffice依赖项,以便能够将PDF转换成正常的word文档?
发布于 2018-12-15 03:42:28
您的问题在于用于创建PDF的软件;PDF中文本框的输出是某些低端PDF创建软件的一个特点。在导入过程中,对此没有什么可说的;您需要在导入过程之后清理它。
在清理过程中,您可以使用一个单词宏:
Sub EraseTextBoxes()
Dim RngDoc As Range, RngShp As Range, i As Long
With ActiveDocument
For i = .Shapes.Count To 1 Step -1
With .Shapes(i)
If .Type = msoTextBox Then
Set RngShp = .TextFrame.TextRange
RngShp.End = RngShp.End - 1
Set RngDoc = .Anchor
RngDoc.Collapse wdCollapseEnd
RngDoc.FormattedText = RngShp.FormattedText
.Delete
End If
End With
Next
End With
End Sub
请注意,宏是否正确地定位输出取决于文本框被锚定的位置;如果锚点位置与文本框位置无关,您将得到狗的早餐。您可能还会以每一行作为自己的段落结束。若要清除此类内容,请参阅http://www.msofficeforums.com/word/29880-cleaning-up-text-pasted-websites-e-mails.html
https://stackoverflow.com/questions/53763301
复制相似问题