首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python-o365将Microsoft图形导出到pdf时提供的文件无效

使用python-o365将Microsoft图形导出到pdf时提供的文件无效
EN

Stack Overflow用户
提问于 2021-02-12 15:18:09
回答 1查看 138关注 0票数 0

我正在尝试使用python-o365库下载保存在一个驱动器中的pdf格式的word文档,但是下载的文件无法用adobe打开。我得到一个错误,Adobe Acrobat could not open 'Output.pdf' because it is either not a supported format...等。我的一些代码如下所示:

代码语言:javascript
复制
my_drive = storage.get_default_drive()
attachments_folder = my_drive.get_special_folder('attachments')
items = attachments_folder.get_items()
target_file = "Example.docx"
file = list(filter(lambda x: target_file == x.name, items))[0]
file.download(to_path = r"C:\Users\UserX\OneDrive WordToPdf", name="Output.pdf",convert_to_pdf=True)

下载的文件似乎只有一个pdf扩展名,但实际上仍然是一个word文件,因为它在Word中打开。

当我删除name中的扩展时

代码语言:javascript
复制
file.download(to_path = r"C:\Users\UserX\OneDrive WordToPdf", name="Output",convert_to_pdf=True)

生成的文件具有docx扩展名,但在Adobe中打开而不是在Word中打开

我怎样才能让它正常工作?当前的解决方法是在文件下载后更改扩展名。

EN

回答 1

Stack Overflow用户

发布于 2021-03-03 22:53:20

我能够重现这个问题。我在下面的链接中对源代码进行了更深入的研究。

https://github.com/O365/python-o365/blob/master/O365/drive.py

让我们关注下面的代码片段--因为它负责转换和下载pdf格式的文件。

据我所知:

如果目标文件名后缀在列表中(在同一文件的顶部定义),则返回

  • If it convert_to_pdf is True

然后,它会下载PDF格式的文件。

发生了什么?

所以在我们的例子中--当你给出一个目标文件名,比如"ABC.pdf“--它会选择目标文件的扩展名( pdf ) --因为pdf不在allowed_pdf_extensions的列表中--这个文件是作为一个普通的docx文件下载的(因为下面这行代码没有被执行)

代码语言:javascript
复制
params['format'] = 'pdf'

这也是为什么如果你不提供扩展名-它接受目标文件的源扩展名- docx - docx在列表allowed_pdf_extensions中,convert_to_pdf被设置为true -它会下载pdf格式的文件。(但文件使用docx扩展名命名)。

可能的工作循环:

我能够暂时绕过这个行为--通过将".pdf“添加到机器的drive.py本地列表中。

现在,您可以编写一段代码-手动更新文件以反映文件名。

或者可以联系作者来解决同样的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66167706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档