0
我試圖從PDF中提取文本,然後返回一個數字,表示有多少頁的pdf由我定義的正則表達式匹配。然後不按預期工作在JS承諾
我的問題是,與其定期檢查單個頁面的文本是否爲匹配的一部分,我的功能將這些部分分成比頁面小的部分。計數只能在整個頁面被讀取後才增加。
getnopages: function(){
var fulltext = ""
var partialmatch;
var somerx = /something/
return pdfjs.getDocument(data).then(function(pdf) {
var pages = [];
pageNumbers = [];
for (var i = 0; i <= 6; i++) {
pages.push(i);
}
var found = false;
var count = 1;
return Promise.all(pages.map(function(pageNumber) {
pageNumbers.push(pageNumber);
return pdf.getPage(pageNumber + 1).then(function(page)
return page.getTextContent().then(function(textContent) {
return textContent.items.map(function(item) {
fulltext+=item.str+'&&&';
return item.str;
}).join('&&&');
});
}).then(function(){
count++;
console.log('the count is ' + count)
var partialmatch;
try {
partialmatch = fulltext.match(somerx)[0]
console.log('the match: ' + partialmatch)
var full = fulltext.slice(0, fulltext.length-3)
console.log('the full text ' + full)
if (fulltext && partialmatch!==full && !found){
found = true;
console.log('now we found our number: ' + count) // this finds where the full text differs from the partial text but returns a number too large to be a page number
}
}
catch(e){
console.log(e)
}
});
}));
}
任何人都可以幫助我弄清楚如何重寫這個,以便計數正確遞增頁碼?
目前尚不清楚其中的全文定義,但看起來像是從隨機順序的所有頁面累計文本(因爲GETPAGE/getTextContent調用一次爲所有頁面,這些以任何順序解決) – async5
@ async5我遺漏了變量聲明 - 只是重新編輯它們。你能否建議一種方法來確保全文以正確的順序返回文本? –