如何通过Google脚本获取Google Docs的页数?
How to get the number of pages in Google Docs via Google script?
我应该怎么做才能通过 Google 脚本获取 Google 文档中的页数(当转换为 PDF 时)?
我已经试过了,但是 returns 0 而不是页数。
function getNumPages()
{
var blob = DocumentApp.getActiveDocument().getAs("application/pdf");
var data = blob.getDataAsString();
var re = /Pages\/Count (\d+)/g;
var match;
var pages = 0;
while(match = re.exec(data)) {
Logger.log("MATCH = " + match[1]);
var value = parseInt(match[1]);
if (value > pages) {
pages = value;
}
}
Logger.log("pages = " + pages);
return pages;
}
您的正则表达式需要 PDF 文件中的 Pages/Count 3
这样的字符串。使用 Logger.log(data)
记录文件的内容显示没有这样的字符串。相反,我找到了文件开头附近的页数:
<< /Linearized 1 /L 18937 /H [ 687 137 ] /O 10 /E 17395 /N 3 /T 18641 >>
/N后面的数字是页数。这是一个提取它的函数:
function getNumPages() {
var blob = DocumentApp.getActiveDocument().getAs("application/pdf");
var data = blob.getDataAsString();
var pages = parseInt(data.match(/ \/N (\d+) /)[1], 10);
Logger.log("pages = " + pages);
return pages;
}
function getNumPages(docId) {
var pages = 0;
var blob = DocumentApp.openById(docId).getAs("application/pdf");
var data = blob.getDataAsString();
try {
var matched = data.match(/\/Type[\s]*\/Page[^s]/g);
pages = matched.length;
} catch(err) {
// NOOP
}
return pages;
}
我应该怎么做才能通过 Google 脚本获取 Google 文档中的页数(当转换为 PDF 时)?
我已经试过了,但是 returns 0 而不是页数。
function getNumPages()
{
var blob = DocumentApp.getActiveDocument().getAs("application/pdf");
var data = blob.getDataAsString();
var re = /Pages\/Count (\d+)/g;
var match;
var pages = 0;
while(match = re.exec(data)) {
Logger.log("MATCH = " + match[1]);
var value = parseInt(match[1]);
if (value > pages) {
pages = value;
}
}
Logger.log("pages = " + pages);
return pages;
}
您的正则表达式需要 PDF 文件中的 Pages/Count 3
这样的字符串。使用 Logger.log(data)
记录文件的内容显示没有这样的字符串。相反,我找到了文件开头附近的页数:
<< /Linearized 1 /L 18937 /H [ 687 137 ] /O 10 /E 17395 /N 3 /T 18641 >>
/N后面的数字是页数。这是一个提取它的函数:
function getNumPages() {
var blob = DocumentApp.getActiveDocument().getAs("application/pdf");
var data = blob.getDataAsString();
var pages = parseInt(data.match(/ \/N (\d+) /)[1], 10);
Logger.log("pages = " + pages);
return pages;
}
function getNumPages(docId) {
var pages = 0;
var blob = DocumentApp.openById(docId).getAs("application/pdf");
var data = blob.getDataAsString();
try {
var matched = data.match(/\/Type[\s]*\/Page[^s]/g);
pages = matched.length;
} catch(err) {
// NOOP
}
return pages;
}