我目前正在开发一个 Django Web 应用程序,该应用程序需要从 DMS 中检索多个文档,将它们合并为一个大型 PDF,并将该文件作为输出分发给用户。
这个过程中最大的问题源于其中一些文件是由 python 以 doc/docx 格式检索的。通常我会使用 pythoncom 和 comtypes.client 之类的东西来转换这些文件,然后再进行合并,如下所示:
wdFormatPDF = 17
pythoncom.CoInitialize()
word = comtypes.client.CreateObject('Word.Application')
word.Visible = False
doc = word.Documents.Open([retrieved doc file])
doc.SaveAs(os.path.join([newly created pdf file]), FileFormat=wdFormatPDF)
doc.Close()
word.Quit()
但是,这只适用于安装了 Microsoft Word 的机器。由于该应用程序理想情况下将在 IIS 服务器上运行,因此在我的环境中这并不是一个真正的选择。
我考虑过测试 pypandoc 和 miktex/xelatex(这仍然需要在 Windows Server 上进行外部引用,但我的选择似乎开始受到限制),就像这样
output = pypandoc.convert_file([retrieved doc file]), 'pdf', outputfile=os.path.join([newly created PDF file]))
虽然这会创建 PDF,但转换存在问题。我可以通过将字体设置添加到额外的参数来解决一些问题,但是 doc 文件有图像和一些特定的对齐方式不能很好地翻译。
我也知道 Reportlab,尽管它似乎更适合基于现有文本创建 PDF,而不是移植完整的文档、图像和所有内容。
因此我的问题是:有没有办法像使用 Word.Application comtype 一样干净地执行此转换,但无需安装 Word?如果没有,是否还有其他可用的软件包我无法找到或正确使用?