计算pdf文件中的总页数
每周,我都会从我的客户那里收到一套pdf文件 他们将把pdf文件粘贴到特定的google drive文件夹中。我需要一个pdf文件的总页数。我试图在应用程序脚本中创建一个代码,这将有助于更新pdf文件名和特定Google工作表中的总页数 我找到了为google文档和应用程序创建的代码 但这不起作用。我正在寻找一个应用程序脚本,它有助于检查特定的驱动器文件夹,并更新pdf文件名和在特定的谷歌页面的总页数 我试着写下剧本计算pdf文件中的总页数,pdf,google-apps-script,Pdf,Google Apps Script,每周,我都会从我的客户那里收到一套pdf文件 他们将把pdf文件粘贴到特定的google drive文件夹中。我需要一个pdf文件的总页数。我试图在应用程序脚本中创建一个代码,这将有助于更新pdf文件名和特定Google工作表中的总页数 我找到了为google文档和应用程序创建的代码 但这不起作用。我正在寻找一个应用程序脚本,它有助于检查特定的驱动器文件夹,并更新pdf文件名和在特定的谷歌页面的总页数 我试着写下剧本 function getNumberofPages() { var myF
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文件无效
提前感谢。不幸的是,目前还没有使用谷歌API直接从PDF文件检索总页面的方法。那么这些变通方法呢?请根据您的情况选择它 解决方法1: 在此解决方案中,它检索PDF文件中内容流的数量。内容流显示为
/Contents
的属性
当这反映到脚本中时,它将变成如下所示
修改脚本:
- 尽管这个解决方法很简单,但它可能无法像上面所说的那样用于所有PDF文件。如果此解决方案不能用于PDF文件,那么下面的解决方案2如何
- 我不确定PDF文件的数量和文件大小。所以我没用这个。这是一个示例脚本。所以请根据你的情况修改这个
- 我可以在我的应用程序中使用这些变通方法。但我还不能确认所有的PDF文件。因此,如果这些解决方法不适用于您的PDF文件,我很抱歉
/Contents
。由于op不控制客户端的上载(至少他没有指出其他情况),他不知道他的客户端上载的PDF是否与您的类似。因此,在他的情况下,您的方法可能会返回不准确的结果。@mkl谢谢您的建议。对因此,我添加了一个注释部分,并为我正在使用的谷歌应用程序脚本提出了一个简单的解决方案。但是根据你的建议,我又增加了一个解决方法。它使用API。这样,OP可以针对OP的情况选择解决方案。你如何看待这个问题?很可能第二个解决方案更准确,但是你依赖于一个外部API,并且必须考虑API无法使用的情况。好吧…@mkl谢谢你的回复。我为我的拙劣技能道歉。我想多学习,不必为任何事道歉。外部API只是有一个缺点,可能不是一直可用。因此,使用它们意味着自己的代码也只有有限的可用性。这不一定是KO,但必须意识到这一点并告诉客户。
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)
}
}
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)
}
}
function menuItem() {
var folder =
DriveApp.getFoldersByName('Test').next();
var contents = folder.searchFiles('title contains ".PDF"');
var file;
var name;
var sheet = SpreadsheetApp.getActiveSheet();
var count;
sheet.clear();
sheet.appendRow(["Name", "Number of pages"]);
while(contents.hasNext()) {
file = contents.next();
name = file.getName();
count =
file.getBlob().getDataAsString().split("/Contents").length - 1;
data = [name, count]
sheet.appendRow(data);
}
};
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('PDF Page Calculator')
.addItem("PDF Page Calculator",
'menuItem')
.addToUi();
};