gpt4 book ai didi

node.js - 如何使用 Drive API 以 PDF 文件的形式获取 Google Doc 并将该 blob 发送给我的 API 使用者?

转载 作者:行者123 更新时间:2023-12-04 10:04:46 25 4
gpt4 key购买 nike

我正在使用 Express、Node 和 Google Drive API。我正在尝试使用 PDF 文件的 blob 响应对我的端点的 API 调用。但是当我从 Drive API 获取文件时我不想保存文件,我基本上只想将它存储在一个变量中,将其转换为 base64 并将其发送给我的 API 使用者。

快速概览正在发生的事情。我被困在第 3-4 步。
1. 消费者使用包含支付信息的负载调用我的 API 端点
2. 我从模板创建一个新文档,并使用有效负载使用 Docs API 填充文档。
3. 我将文档导出为 PDF。
4. 我向我的 API 使用者发送响应,其中包含来自第 3 步的文档 blob。

我怎样才能做到这一点?

我为什么要达到这个目标?基本上,我试图避免创建额外的工作来下载文件并将其存储在某处,因为那样我需要另一个连接到某些东西。如果我无法避免这种情况,那么当我想尝试使用 Buckets 在 GCP 上处理此问题时。因此,那里的建议也会有所帮助。

下面是我的代码的概述,

// this works
const driveAPI = google.drive({version:"v3", auth: client});
const fileId = await createDocFromTemplate();
const doc = updateDoc( fileId, req.body );

// now it gets tricky
const PDF_FILE = exportDocAsPdf(doc); // how can I temporarily store pdf to a variable?
const PDF_AS_BASE = transformPdfToBase64(PDF_FILE); // how can I convert pdf to base64?

// this is what I want to send back to the API consumer
res.send({
id: fileId,
fileAsPdf : PDF_AS_BASE
})

最佳答案

我相信你的目标如下。

  • 您想在不创建文件作为 base64 数据的情况下导出 Google 文档。
  • 您想使用 googleapis 和 Node.js 来实现这一点。
  • 您已经能够使用 Drive API 导出 Google 文档。

  • 为此,这个答案怎么样?

    不幸的是,我看不到你的脚本 updateDoc( fileId, req.body ) , exportDocAsPdf(doc)transformPdfToBase64(PDF_FILE) .所以在这个答案中,我想提出一个示例脚本,用于通过输入Google Document的文件ID返回PDF格式的base64数据。

    示例脚本:

    在这种情况下,输入和输出值分别是 Google Document 的文件 ID 和 PDF 格式的 base64 数据。
    async function exportFile(drive, documentId) {
    const res = await drive.files.export(
    {
    fileId: documentId,
    mimeType: "application/pdf",
    },
    { responseType: "arraybuffer" }
    );
    return Buffer.from(res.data).toString("base64");
    }

    const documentId = "###"; // Please set the Google Document ID

    const driveAPI = google.drive({ version: "v3", auth: client });
    const base64 = await exportFile(driveAPI, documentId).catch((err) => {
    if (err) console.log(err);
    });
    console.log(base64);
  • 在这种情况下,Google 文档将导出为 PDF 格式。当时的数据是arraybuffer。因此使用 Buffer.from(res.data).toString("base64") 检索 base64 数据.

  • 引用:
  • google-api-nodejs-client
  • Files: export
  • 关于node.js - 如何使用 Drive API 以 PDF 文件的形式获取 Google Doc 并将该 blob 发送给我的 API 使用者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61642059/

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