Google диск всегда экспортирует пустой PDF через API - PullRequest
1 голос
/ 26 января 2020

У меня есть презентация Google на моем Gdrive, и я хочу экспортировать ее программно в PDF. Работает нормально, но скачанный файл всегда пуст! И все же с правильным количеством страниц.

Вот мой код

function exportFile(auth, id) {
  const drive = google.drive({
    version: "v3",
    auth: auth
  });
  drive.files.export(
    {
      fileId: id,
      mimeType: "application/pdf"
    },
    (err, res) => {
      if (err) {
        console.log(err);
      } else {
        fs.writeFile("local.pdf", res.data, function(err) {
          if (err) {
            return console.log(err);
          }
        });
      }
    }
  );
}

fs.readFile("credentials.json", (err, content) => {
  if (err) return console.log("Error loading client secret file:", err);
  // Authorize a client with credentials, then call the Google drive API.
  authorize(JSON.parse(content), auth => {
    exportFile(auth, "1mtxWDrPCt8EL_UoSUbrLv38Cu8_8LUm0onSv0MPCIbk");
  });
});


и сгенерированный файл с правильным количеством слайдов (2), но с пустым содержимым:

enter image description here

Есть идеи, что мне не хватает? Большое спасибо!

1 Ответ

1 голос
/ 27 января 2020

Из вашего вопроса я понял, что вы уже смогли экспортировать файл из Google Drive с помощью Drive API. Так как насчет этой модификации?

Модифицированный скрипт:

Когда ваш скрипт модифицирован, пожалуйста, измените exportFile() следующим образом. Пожалуйста, используйте responseType следующим образом.

function exportFile(auth, id) {
  const drive = google.drive({
    version: "v3",
    auth: auth
  });
  drive.files.export(
    {
      fileId: id,
      mimeType: "application/pdf"
    },
    { responseType: "arraybuffer" },  // Added
    (err, res) => {
      if (err) {
        console.log(err);
      } else {
        fs.writeFile("local.pdf", Buffer.from(res.data), function(err) { // Modified
          if (err) {
            return console.log(err);
          }
        });
      }
    }
  );
}

Примечание:

  • В этом случае предполагается, что вы используете самую последнюю версию googleapis .

Ссылки:

Если это не то направление, которое вы хотите, я прошу прощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...