首页 > 解决方案 > 计算pdf文件中的总页数

问题描述

每周,我都会从我的客户那里收到一组 pdf 文件。

他们会将 pdf 文件粘贴到特定的谷歌驱动器文件夹中。我需要 pdf 文件的总页数。我试图在 Apps 脚本中创建一个代码,这将有助于更新 pdf 文件名和特定 Google 工作表中的总页数。

我在这里这里找到了为谷歌文档创建的代码 。

但这不起作用。我正在寻找一个应用程序脚本,它有助于检查特定的驱动器文件夹并更新 pdf 文件名和特定谷歌表中的总页数。

我试过下面的脚本。

function getNumberofPages() {
  var myFolder = DriveApp.getFoldersByName("Test").next();
  var files = myFolder.searchFiles('title contains ".PDF"');
  while (files.hasNext()) {
    var file = files.next();
    Logger.log(file.getName());
    Logger.log(file.length);
  }
}

但是长度选项不适用于pdf文件....

提前致谢。

标签: pdfgoogle-apps-script

解决方案


不幸的是,目前还没有使用 Google API 从 PDF 文件中直接检索总页数的方法。那么这些变通方法呢?请根据您的情况进行选择。

解决方法 1:

在此解决方法中,它检索 PDF 文件中内容流的数量。内容流显示为 的属性/Contents

当这反映到您的脚本中时,它变成如下。

修改后的脚本:

function getNumberofPages() {
  var myFolder = DriveApp.getFoldersByName("Test").next();
  var files = myFolder.searchFiles('title contains ".PDF"');
  while (files.hasNext()) {
    var file = files.next();
    var n = file.getBlob().getDataAsString().split("/Contents").length - 1;
    Logger.log("fileName: %s, totalPages: %s", file.getName(), n)
  }
}

解决方法 2:

在此解决方法中,API 用于检索 PDF 文件的总页数。我使用了拆分 PDF API。从拆分文件的数量中检索总页数。当您使用此 API 时,请检查ConvertAPI并检索您的密钥。

修改后的脚本:

function getNumberofPages() {
  var myFolder = DriveApp.getFoldersByName("Test").next();
  var files = myFolder.searchFiles('title contains ".PDF"');
  while (files.hasNext()) {
    var file = files.next();
    var url = "https://v2.convertapi.com/convert/pdf/to/split?Secret=#####"; // Please set your secret key.
    var options = {
      method: "post",
      payload: {File: DriveApp.getFileById(file.getId()).getBlob()},
    }
    var res = UrlFetchApp.fetch(url, options);
    res = JSON.parse(res.getContentText());
    Logger.log("fileName: %s, totalPages: %s", file.getName(), res.Files.length)
  }
}
  • 我不确定 PDF 文件的数量和文件大小。所以我没有为此使用fetchAll 方法。这是一个示例脚本。因此,请根据您的情况进行修改。

笔记:

  • 我可以在我的应用程序中使用这些解决方法。但我无法确认所有 PDF 文件。因此,如果这些变通方法不适用于您的 PDF 文件,我很抱歉。

参考:


推荐阅读