如何在 google 应用程序脚本中获取 PDF 的制作者

How to get producer of a PDF in google app script

我正在尝试编写一个 gmail 附加组件,我在其中遍历所有电子邮件并根据其制作者创建报告。迭代电子邮件是最简单的部分,我已经做到了,但是我找不到任何方法来获取每个 PDF 的生产者行。 到目前为止我试过了

在 google 应用程序脚本中获取 PDF 制作行的最佳方法是什么?

谢谢

  • 您想从 PDF 文件中检索 Producer 的值。

我能像上面那样理解。如果我的理解是正确的,这个示例脚本怎么样?在此示例脚本中,从您共享的 PDF 文件中,Producer 的值通过 2 个正则表达式从文件内容中检索。请将此视为几个答案之一。

示例脚本:

当您使用这个脚本时,请设置放置PDF文件的文件夹的文件夹ID。此脚本从文件夹中的所有 PDF 文件中检索值。

var folderId = "### folderId ###";
var files = DriveApp.getFolderById(folderId).getFilesByType(MimeType.PDF);
var regex = [/Producer\((\w.+)\)/i, /<pdf:Producer>(\w.+)<\/pdf:Producer>/i];
var result = [];
while (files.hasNext()) {
  var file = files.next();
  var content = file.getBlob().getDataAsString();
  var r = regex.reduce(function(s, e) {
    var m = content.match(e);
    if (Array.isArray(m)) s = m[1];
    return s;
  }, "");
  result.push({
    fileName: file.getName(),
    fileId: file.getId(),
    vaueOfProducer: r,
  });
}
Logger.log(result); // Result

结果:

此示例结果是从放置共享的 3 个 PDF 文件的文件夹(我的 Google 驱动器)中检索到的。

[
  {
    "fileName": "2348706469653861032.pdf",
    "fileId": "###",
    "vaueOfProducer": "iText� 7.1.5 �2000-2019 iText Group NV \(iText; licensed version\)"
  },
  {
    "fileName": "Getting started with OneDrive.pdf",
    "fileId": "###",
    "vaueOfProducer": "Adobe PDF library 15.00"
  },
  {
    "fileName": "DITO-Salesflow-040419-1359-46.pdf",
    "fileId": "###",
    "vaueOfProducer": "iText 2.1.7 by 1T3XT"
  }
]

注:

  • 关于2348706469653861032.pdf的文件,无法显示的字符包含在Producer的值中。
  • 这是一个示例脚本。所以请根据您的情况进行修改。