К сожалению, пока нет способов прямого извлечения общего количества страниц из файла PDF с помощью API Google. Так как насчет этих обходных путей? Пожалуйста, выберите его для вашей ситуации.
Обходной путь 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)
}
}
- Хотя этот обходной путь прост, его можно использовать не для всех файлов PDF, как говорит @ mkl . Если этот обходной путь не может быть использован для ваших файлов PDF, как насчет следующего обходного пути 2?
Обходной путь 2:
В этом обходном пути API используется для получения общего количества страниц файла PDF. Я использовал Split 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, извините.
Справка: