LibreOffice 将 PDF 转换为 Word 作为文本框而不是普通文档

Posted

技术标签:

【中文标题】LibreOffice 将 PDF 转换为 Word 作为文本框而不是普通文档【英文标题】:LibreOffice convert PDF to Word as textbox instead normal document 【发布时间】:2018-12-13 13:46:55 【问题描述】:

我想使用 LibreOffice 6.1.3.2 10(Build:2) 从 Ubuntu 18 终端将 PDF 转换为 Microsoft Word(doc、docx)(实际上我使用 php 执行 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 cloudadobe cloud这样的高级软件,但我不认为像ilovepdf这样的网站会使用付费服务来提供免费服务。我的问题是,我是否遗漏了 LibreOffice 依赖项中的某些内容才能将 PDF 转换为普通 Word 文档?

【问题讨论】:

有解决办法吗? 有没有可能增加 TEXT BOX 的高度?? 【参考方案1】:

您的问题在于用于创建 PDF 的软件;以 PDF 文本框的形式输出是某些低端 PDF 创建软件的特点。在导入过程中,Word 对此无能为力;之后你需要清理它。

可用于清理的 Word 宏是:

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

【讨论】:

为什么我什至不考虑这个。辉煌。我会尝试清理文本框 @plonknimbuzz 我在之前的答案中添加了一个用于文本框清理的宏。 是否可以使用 PHP 来实现? 工作得很好,谢谢,但我正在寻找一个 PHP 解决方案。有什么建议吗? 您应该开始自己的线程,展示您自己的编码工作,也许还包括指向该线程的链接。有大量免费的 PHP 代码可用于自动化 Word。

以上是关于LibreOffice 将 PDF 转换为 Word 作为文本框而不是普通文档的主要内容,如果未能解决你的问题,请参考以下文章

LibreOffice 将 PDF 转换为 Word 作为文本框而不是普通文档

LibreOffice:使用 --convert-to 将 PDF 转换为纯文本

通过 JODConverter 和 LibreOffice 将 docx 转换为 pdf 会导致错误

在 CLI (soffice) 中通过 Libreoffice 将 XLSX 转换为 PDF 时更改“LiberationSerif”字体

在终端中使用 LibreOffice 从 Mac 命令将 HTML 转换为 PDF?

带有 LibreOffice 的 JodConverter 在 docx 到 pdf 转换后将所有字母输出为正方形