【发布时间】:2019-08-20 18:30:06
【问题描述】:
我想使用 Google 文档和 Javascript 来复制我为 Microsoft Word 文档编写的 VBA 代码。它将用于我正在编写的 Angular 应用程序中。
VBA 代码在文档中搜索“切片标签”并在找到它们时生成 PDF 文件。例如,如果一个文档由 15 页组成,并且在第 4、7 和 9 页上有切片标签,则代码会生成四个文件:Page1-4.pdf、Page5-7.pdf、Page8-9.pdf 和 Page10 -15.pdf。
在 Javascript 实现中,步骤如下:
- 将 Google 文档转换为 PDF 文件。
- 通过在整个 PDF 中搜索切片标签,将 PDF 文件“切片”为多个 PDF。
- 将切片的 PDF 放在指定的 Google Drive 文件夹中。
请注意,我问了一个类似的问题here。
但是,这是一个 Google 脚本实现。我意识到在 Google Scripts 中没有办法在页面边界上处理文档。如果这样做会更简单,更清洁。相反,我想采取另一种方法。
以下是部分解决步骤 1 的 Javascript 代码。它使用此调用:
gapi.client.drive.files.export
但是,这不会创建 PDF 文件。相反,它会创建一个 PDF 内容块。显然,期望您将 blob 转换为实际文件,但 Google API 似乎没有提供执行此操作的方法。
async function exportDocument(id, mimeType) {
let rtrn;
try {
await gapi.client.drive.files.export(
{'fileId': id,
'mimeType': mimeType,
'fields': 'webViewLink',
})
.then(function(resp) {
// This returns a content blob NOT an actual file
rtrn = resp;
// TODO: How to transform the blob into an actual file (e.g., PDF)
}).catch((err) => {
throw new Error(err.message);
});
} catch (e) {
throw new Error('exportDocument: ' + e.message);
}
return rtrn;
} // end exportDocument
【问题讨论】:
-
相关:this
标签: javascript angular google-apps-script