gpt4 book ai didi

microsoft-graph-api - 如何使用 Microsoft Graph 将 Office 文件转换为 PDF

转载 作者:行者123 更新时间:2023-12-05 04:04:22 26 4
gpt4 key购买 nike

我正在寻找一种将 Office 文件转换为 PDF 的方法。我发现可以使用 Microsoft Graph。

我正在尝试使用 Microsoft Graph 从 OneDrive 下载转换后的 PDF。我想将 .docx 转换为 .pdf。

但是,当我发送以下请求时,即使等待也没有收到响应。

GET https://graph.microsoft.com/v1.0/users/{id}/drive/root:/test.docx:/content?format=pdf

另外,不返回错误代码。如果语法错误,将按预期返回错误代码。只有正确时才会返回。

此外,如果我不转换,我可以下载文件。

GET https://graph.microsoft.com/v1.0/users/{id}/drive/root:/test.docx:/content

是我方法不对还是需要条件?如果可能的话,请给我你实际可以做的示例代码。

 using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
client.BaseAddress = new Uri(graphUrl);

var result = await client.GetAsync("/v1.0/users/xxxxxxxxxxxxxxxxxxxxxxxxx/drive/root:/test.docx:/content?format=pdf");
:

最佳答案

我想详细说明一下Marc's answer通过为 HttpClient 提供几个示例.

因为 默认 HttpClient HttpClientHandler.AllowAutoRedirect property设置为 True 不需要明确遵循 HTTP 重定向 header ,内容可以这样下载:

using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
client.BaseAddress = new Uri("https://graph.microsoft.com");

var response = await client.GetAsync($"/v1.0/drives/{driveId}/root:/{filePath}:/content?format=pdf");

//save content into file
using (var file = System.IO.File.Create(fileName))
{
var stream = await response.Content.ReadAsStreamAsync();
await stream.CopyToAsync(file);
}
}

如果遵循 HTTP 重定向被禁用,要下载转换后的文件,您的应用必须遵循响应中的 Location header ,如下所示:

var handler = new HttpClientHandler()
{
AllowAutoRedirect = false
};

using (HttpClient client = new HttpClient(handler))
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
client.BaseAddress = new Uri("https://graph.microsoft.com");

var response = await client.GetAsync($"/v1.0/drives/{driveId}/root:/{filePath}:/content?format=pdf");
if(response.StatusCode == HttpStatusCode.Redirect)
{
response = await client.GetAsync(response.Headers.Location); //get the actual content
}

//save content into file
using (var file = System.IO.File.Create(fileName))
{
var stream = await response.Content.ReadAsStreamAsync();
await stream.CopyToAsync(file);
}
}

关于microsoft-graph-api - 如何使用 Microsoft Graph 将 Office 文件转换为 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52620458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com