Microsoft Graph API 将原始检索到的 .pdf 字符串内容从 Python 写入 pdf 文件

问题描述 投票:0回答:1

我正在使用 Microsoft Graph API 从 Python 脚本中检索 Sharepoint 文档内容。我搜索具有

https://graph.microsoft.com/v1.0/search/query
端点的文档,然后尝试通过
https://graph.microsoft.com/v1.0/sites/{site_id}/drives/{drive_id}/items/{item_id}/content
检索文档内容。我想将内容以 .pdf 形式写入 Blob 存储以进行进一步处理。

现在,当我使用 Python

requests
库调用内容端点时,我会从端点以字符串形式返回 .pdf,我可以使用
response.text
检索该内容。此文本看起来与您期望的 .pdf 内容(片段)一样:

%PDF-1.7
%����
1 0 obj
<</Type/Catalog/Pages 2 0 R/Lang(nl-NL) /StructTreeRoot 29 0 R/MarkInfo<</Marked true>>/Metadata 117 0 R/ViewerPreferences 118 0 R>>
endobj
2 0 obj
<</Type/Pages/Count 2/Kids[ 3 0 R 24 0 R] >>
endobj
3 0 obj
<</Type/Page/Parent 2 0 R/Resources<</Font<</F1 5 0 R/F2 10 0 R/F3 12 0 R/F4 17 0 R/F5 19 0 R>>/ExtGState<</GS7 7 0 R/GS8 8 0 R>>/XObject<</Image9 9 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 594.96 842.04] /Contents 4 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 0>>
endobj
4 0 obj
<</Filter/FlateDecode/Length 3438>>
stream
x��\mS�8�N�A��EX�$�s[T

所以我尝试做的是将这些内容写入一个文件,例如:

with open('pdffilefromsharepoint.pdf', 'w') as f:
  f.write(response.text)

现在可以毫无错误地写入 PDF。但是,当我在 .pdf 阅读器中打开文档时,我只看到两个空白页面,根本没有任何内容。此外,当我查看原始 Sharepoint 文件的原始内容和通过从 Graph API 收集的内容结果写入的 .pdf 文件时,它们似乎完全相同:行数相同,而且似乎也相同。逐行具有完全相同的内容。

值得注意的是,原始文档只有 68kb,而根据收集的 API 内容编写的文档有 113kb。

有没有人尝试过实现类似的事情?我是否需要一个特殊的包才能从 Python 再次将此内容写入 .pdf?

python pdf microsoft-graph-api
1个回答
0
投票

你能解决这个问题吗? 我面临类似的问题,您可以在这里发布解决方案吗?

© www.soinside.com 2019 - 2024. All rights reserved.