我正在处理一个问题,试图开发一个网络应用程序,其中一部分将上传的docx文件转换为pdf文件(经过一些处理)。使用python-docx和其他方法,我不需要安装word的windows机器,甚至不需要在linux上安装libreoffice,进行大部分处理(我的网络服务器是pythonAnywhere-linux,但没有libreoffice,也没有sudo或codeapt安装权限。但是转换成pdf似乎需要其中之一。从探索这里和其他地方的问题,这是我到目前为止所拥有的:
import subprocess
try:
from comtypes import client
except ImportError:
client = None
def doc2pdf(doc):
"""
convert a doc/docx document to pdf format
:param doc: path to document
"""
doc = os.path.abspath(doc) # bugfix - searching files in windows/system32
if client is None:
return doc2pdf_linux(doc)
name, ext = os.path.splitext(doc)
try:
word = client.CreateObject('Word.Application')
worddoc = word.Documents.Open(doc)
worddoc.SaveAs(name + '.pdf', FileFormat=17)
except Exception:
raise
finally:
worddoc.Close()
word.Quit()
def doc2pdf_linux(doc):
"""
convert a doc/docx document to pdf format (linux only, requires libreoffice)
:param doc: path to document
"""
cmd = 'libreoffice --convert-to pdf'.split() + [doc]
p = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
p.wait(timeout=10)
stdout, stderr = p.communicate()
if stderr:
raise subprocess.SubprocessError(stderr)
如您所见,一种方法需要comtypes
,另一种方法需要libreoffice
作为子流程。除了切换到更复杂的托管服务器,还有什么解决方案吗?
另一个你可以使用的是libreoffice,然而,正如第一个响应者所说,质量永远不会像使用实际的格子一样好。
不管怎样,在你安装了libreoffice之后,下面是完成它的代码。
from subprocess import Popen
LIBRE_OFFICE = r"C:\Program Files\LibreOffice\program\soffice.exe"
def convert_to_pdf(input_docx, out_folder):
p = Popen([LIBRE_OFFICE, '--headless', '--convert-to', 'pdf', '--outdir',
out_folder, input_docx])
print([LIBRE_OFFICE, '--convert-to', 'pdf', input_docx])
p.communicate()
sample_doc = 'file.docx'
out_folder = 'some_folder'
convert_to_pdf(sample_doc, out_folder)
PythonyWhere帮助页面提供了有关使用PDF文件的信息,请参见:https://help.pythonanywhere.com/pages/PDF
摘要:PythonyWhere安装了许多用于PDF操作的Python包,其中一个包可以执行您想要的操作。然而,对我来说,向abiword
开火似乎是最容易的。shell命令abiword--to=pdf filetoconvert.docx
将docx文件转换为pdf文件,并在与docx相同的目录中生成名为filetoconvert.pdf
的文件。请注意,此命令将向标准错误流输出一条错误消息,抱怨XDG\u RUNTIME\u DIR
(至少对我来说是这样),但它仍然有效,并且可以忽略错误消息。
我正在努力寻找用Python将PDF文件转换为.docx文件的方法。 我见过其他与此相关的帖子,但在我的情况下,它们似乎都不正常。 我特别使用 这给了我输出[1],但在我的文件夹中找不到任何.docx文档。 我已经安装了LibreOffice 5.3。 有什么线索吗? 提前谢谢你!
我花了大量的时间试图确定到底出了什么问题,使用LibreOffice将pdf转换为docx(以及doc转换为docx)的代码。 我使用了两个windows run接口来测试运行一些我发现相关的代码,也尝试了python,但两者都不起作用。 我在Windows上安装了LibreOffice v6.0.2。 我一直在使用此代码的变体尝试将某些pdf文件转换为与特定pdf文件不相关的docx: 我已经在
我正在使用一个带有python函数的env将docx转换为pdf文件。我在用邮递员寄base64。然后我挂载docx文件(一切都正常),但是当它将docx文件转换为pdf时,会出现一个错误。我想那是因为我的环境里没有办公室?没有办公室我怎么能修好它?谢谢 系统。私人。CoreLib:执行函数时的异常:函数。FunConzer.系统。私人。CoreLib:结果:失败异常:属性错误:模块'comtyp
我正试图用Docx4J将一个DOCX文件转换为PDF,并收到两个不同文档的两个不同的异常。 1)对于文档1,第一个文档的org.docx4j.utils.singletRaversAlutilVisitorCallback.apply(SingletRaversAlutilVisitorCallback.java:27)中出现一个NullPointerException。 下面包含的代码是否是在P
问题内容: 如何使用Python将PDF文件转换为HTML? 我只是在想Google会(或似乎会)对PDF文件建立索引的行为。 我的最终目标是设置Apache以显示PDF文件的HTML,因此,向该方向发展的任何事情也将不胜感激。 问题答案: 该poppler的包提供了一个实用PDF2HTML您可能能够使用。还有一个Python绑定到libpoppler。
我需要使用python将.doc和.docx文件转换为.pdf。我已经看到了一些可用的答案,但它们使用的是comtypes和OpenWordApplication。我不能那样做。我寻求的是一种使用一些python库的方法,这些库保留字体、表格、标题大小和图像等,而不打开MS Word或LibreOffice或类似的东西,如果需要的话,将.doc和.docx文件转换为某种中间格式(然后将该格式转换为