尝试使用 Drive API 将 docx 文件转换为另一种格式 (pdf)

Trying to convert docx file to another format(pdf) using Drive API

我试图使用驱动器 api 将 .docx 文件转换为 .pdf,这听起来很合理,因为您可以手动完成。 这是我的代码:

 FilesResource.CreateMediaUpload request;
        using (var stream = new System.IO.FileStream(@"test.docx",
            System.IO.FileMode.Open))
        {
            request = driveService.Files.Create(
                fileMetadata, stream, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
            request.Fields = ""id, webViewLink, webContentLink, size";
            var x = request.Upload();
            Console.WriteLine(x);
        }
        var file = request.ResponseBody;

之后,我正在获取此文件的 ID 并尝试执行以下操作:

  var downloadRequest = driveService.Files.Export(file.Id, "application/pdf");

失败并出现错误:"Export only supports Google Docs" Ofc!我想它还没有变成 "Google DOC",但是,如前所述 here and here,这种格式支持转换。

好的,我注意到如果您转到驱动器并手动打开文件,它将变成 google doc 文件,并且还会获得新的 ID。此 ID 上的导出将正常工作。但是,手动执行某些操作对于我们的需求来说是不可接受的方法。 尝试了另一种方法,您可以使用直接 link 和 &export=pdf 参数来转换 google doc 文件。

https://docs.google.com/document/d/FILE_ID/export?format=doc

但是在这种情况下将 FILEID 传递给那个 link 不起作用(与 "DOC" 文件一起工作就好)尝试做一些类似于 的事情。没办法。

所以。有什么方法可以触发 File 成为 Google DOC 并等待它转换?还有别的办法吗? 提前致谢!

感谢@bash.d 我能够从 docx 转换为 pdf。

实际上必须使用 API 的 v2 及其 "Insert" 方法。

https://developers.google.com/drive/v2/reference/files/insert#examples

使用此 link 中的代码并指定

request.Convert = true;

之后我用了

 var downloadRequest = driveService.Files.Export(file.Id, "application/pdf");

瞧!有效!就我而言,转换文件大约需要 30 秒。