繁体   English   中英

使用Javascript,如何将Google文档转换为PDF文件,然后将其“切片”为多个PDF?

[英]Using Javascript, how can I convert a Google doc to a PDF file then “slice” it into multiple PDFs?

我想复制我使用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实现中,步骤为:

  1. 将Google文档转换为PDF文件。
  2. 通过在整个PDF中搜索切片标签,将PDF文件“切片”为多个PDF。
  3. 将切片的PDF放在指定的Google云端硬盘文件夹中。

请注意,我在这里问了类似的问题。

但是,这是Google脚本实现。 我意识到,在Google脚本中无法解决页面边界上的文档。 如果这样做的话,它将更加简单和整洁。 相反,我想采取另一种方法。

下面是部分解决步骤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 (eg, PDF) }).catch((err) => { throw new Error(err.message); }); } catch (e) { throw new Error('exportDocument: ' + e.message); } return rtrn; } // end exportDocument 

Blob是原始数据的二进制表示。

通常,使用PDF时,Blob会变成一个文件(文件是Blob),并保存到本地文件系统中。 有关示例,请参见如何在JavaScript中将Blob转换为File

还有一个“文件保存器” npm库,如果您不想自己做的话,我相信还有Angular / Typescript版本。

我还没有做,但是我想如果您要用来处理PDF的库期望有一个PDF文件,您可能可以将Blob转换为PDF,而无需将其写入文件系统,然后从那里开始工作。

顺便说一句,您的问题有一个或多个“接近”票,因为您提出了一个非常广泛的问题(即“我如何编写整个应用程序”),而不是问您真正需要回答的针对性问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM