我试图使用驱动器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");
失败并显示错误:“导出仅支持Google文档” OFC!我认为它还没有成为“Google DOC”,但是,如here和here所述,此格式支持转换。
好的,我注意到你是否去了驱动器并手动打开文件它将成为谷歌doc文件,并将获得新的ID。此ID的导出将正常工作。但是,手动执行操作并不是我们需要的可接受方法。 试过另一种方法,你可以使用直接链接& export = pdf参数来转换谷歌doc文件。
https://docs.google.com/document/d/FILE_ID/export?format=doc
但是将FILEID传递给该链接在这种情况下不起作用(使用“DOC”文件就好了)尝试做与stackoverflow answer类似的操作。没办法。
因此。有没有办法触发File成为Google DOC并等到它转换?还有其他方法吗? 提前谢谢!
答案 0 :(得分:0)
感谢@ bash.d我能够从docx转换为pdf。
实际上必须使用API的v2及其“插入”方法。
https://developers.google.com/drive/v2/reference/files/insert#examples
使用此链接中的代码并指定
class CustomTableController: UITableViewController {
fileprivate var data: [Model] = []
override func viewDidLoad() {
super.viewDidLoad()
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44
// registering a cell class for reuse is important
// but it's enough to make it once in viewDidLoad
tableView.register(CustomCell.self, forCellReuseIdentifier: CustomCell.identifier)
tableView.reloadData()
}
// MARK: Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// here you can dequeue your cell
let cell = tableView.dequeueReusableCell(withIdentifier: CustomCell.identifier, for: indexPath) as! CustomCell
// configure the cell using model, e.g.:
cell.configure(withTitle: data[indexPath.row].title)
return cell
}
}
之后我用
request.Convert = true;
和瞧!有效!在我的情况下转换文件需要大约30秒。