pdf - 计算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文件....
提前致谢。
解决方案
不幸的是,目前还没有使用 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)
}
}
- 尽管此解决方法很简单,但正如@mkl所说,它可能无法用于所有 PDF 文件。如果此解决方法不能用于您的 PDF 文件,那么以下解决方法 2 怎么样?
解决方法 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 文件,我很抱歉。
参考:
推荐阅读
- python - 使用 pygame 中的类来创建一个矩形?
- javascript - Javascript - 删除动态属性
- python - Python cx_Oracle 相当于 ROracle::dbsendquery?
- r - 如何在因子中添加“TOTAL”级别,以便可以在条形图中显示?
- asp.net-mvc - 如何在cshtml文件中只显示一次
- c++ - 为什么更改指针的引用不会改变它的原始值?
- sql - 将多个列连接在一起,在 SQL 中由一个字符分割
- python - 在 Pandas 中,我如何使用转换和使用来自其他列的信息?
- ionic4 - 使用ionic4在Http请求中获取CORS错误
- javascript - 如何用 Javascript 隐藏表格?