Merge pull request #8194 from Snuffleupagus/getTextContent-use-proper-handler
Use a proper `MessageHandler` for `PartialEvaluator.getTextContent` to avoid errors for fonts relying on built-in CMap files (PR 8064 follow-up)
This commit is contained in:
commit
b7ba44b530
@ -310,14 +310,9 @@ var Page = (function PageClosure() {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
extractTextContent: function Page_extractTextContent(task,
|
extractTextContent: function Page_extractTextContent(handler, task,
|
||||||
normalizeWhitespace,
|
normalizeWhitespace,
|
||||||
combineTextItems) {
|
combineTextItems) {
|
||||||
var handler = {
|
|
||||||
on: function nullHandlerOn() {},
|
|
||||||
send: function nullHandlerSend() {}
|
|
||||||
};
|
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
var pdfManager = this.pdfManager;
|
var pdfManager = this.pdfManager;
|
||||||
|
@ -906,7 +906,7 @@ var WorkerMessageHandler = {
|
|||||||
startWorkerTask(task);
|
startWorkerTask(task);
|
||||||
var pageNum = pageIndex + 1;
|
var pageNum = pageIndex + 1;
|
||||||
var start = Date.now();
|
var start = Date.now();
|
||||||
return page.extractTextContent(task, normalizeWhitespace,
|
return page.extractTextContent(handler, task, normalizeWhitespace,
|
||||||
combineTextItems).then(
|
combineTextItems).then(
|
||||||
function(textContent) {
|
function(textContent) {
|
||||||
finishWorkerTask(task);
|
finishWorkerTask(task);
|
||||||
|
@ -76,15 +76,17 @@ var DOMCMapReaderFactory = (function DOMCMapReaderFactoryClosure() {
|
|||||||
|
|
||||||
DOMCMapReaderFactory.prototype = {
|
DOMCMapReaderFactory.prototype = {
|
||||||
fetch: function(params) {
|
fetch: function(params) {
|
||||||
if (!params.name) {
|
var name = params.name;
|
||||||
|
if (!name) {
|
||||||
return Promise.reject(new Error('CMap name must be specified.'));
|
return Promise.reject(new Error('CMap name must be specified.'));
|
||||||
}
|
}
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
var url = this.baseUrl + params.name;
|
var url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');
|
||||||
|
|
||||||
var request = new XMLHttpRequest();
|
var request = new XMLHttpRequest();
|
||||||
|
request.open('GET', url, true);
|
||||||
|
|
||||||
if (this.isCompressed) {
|
if (this.isCompressed) {
|
||||||
url += '.bcmap';
|
|
||||||
request.responseType = 'arraybuffer';
|
request.responseType = 'arraybuffer';
|
||||||
}
|
}
|
||||||
request.onreadystatechange = function () {
|
request.onreadystatechange = function () {
|
||||||
@ -105,12 +107,11 @@ var DOMCMapReaderFactory = (function DOMCMapReaderFactoryClosure() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
reject(new Error('Unable to load ' +
|
reject(new Error('Unable to load ' +
|
||||||
(this.isCompressed ? 'binary' : '') +
|
(this.isCompressed ? 'binary ' : '') +
|
||||||
' CMap at: ' + url));
|
'CMap at: ' + url));
|
||||||
}
|
}
|
||||||
}.bind(this);
|
}.bind(this);
|
||||||
|
|
||||||
request.open('GET', url, true);
|
|
||||||
request.send(null);
|
request.send(null);
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
},
|
},
|
||||||
|
@ -2757,10 +2757,17 @@
|
|||||||
"md5": "797093d67c4d4d4231ac6e1fb66bf6c3",
|
"md5": "797093d67c4d4d4231ac6e1fb66bf6c3",
|
||||||
"rounds": 1,
|
"rounds": 1,
|
||||||
"link": true,
|
"link": true,
|
||||||
"firstPage": 1,
|
|
||||||
"lastPage": 1,
|
"lastPage": 1,
|
||||||
"type": "eq"
|
"type": "eq"
|
||||||
},
|
},
|
||||||
|
{ "id": "mao-text",
|
||||||
|
"file": "pdfs/mao.pdf",
|
||||||
|
"md5": "797093d67c4d4d4231ac6e1fb66bf6c3",
|
||||||
|
"rounds": 1,
|
||||||
|
"link": true,
|
||||||
|
"lastPage": 1,
|
||||||
|
"type": "text"
|
||||||
|
},
|
||||||
{ "id": "noembed-identity",
|
{ "id": "noembed-identity",
|
||||||
"file": "pdfs/noembed-identity.pdf",
|
"file": "pdfs/noembed-identity.pdf",
|
||||||
"md5": "05d3803b6c22451e18cb60d8d8c75c0c",
|
"md5": "05d3803b6c22451e18cb60d8d8c75c0c",
|
||||||
|
@ -35,21 +35,19 @@ var NodeCMapReaderFactory = (function NodeCMapReaderFactoryClosure() {
|
|||||||
|
|
||||||
NodeCMapReaderFactory.prototype = {
|
NodeCMapReaderFactory.prototype = {
|
||||||
fetch: function(params) {
|
fetch: function(params) {
|
||||||
if (!params.name) {
|
var name = params.name;
|
||||||
|
if (!name) {
|
||||||
return Promise.reject(new Error('CMap name must be specified.'));
|
return Promise.reject(new Error('CMap name must be specified.'));
|
||||||
}
|
}
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
var url = this.baseUrl + params.name;
|
var url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');
|
||||||
|
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
if (this.isCompressed) {
|
|
||||||
url += '.bcmap';
|
|
||||||
}
|
|
||||||
fs.readFile(url, function (error, data) {
|
fs.readFile(url, function (error, data) {
|
||||||
if (error || !data) {
|
if (error || !data) {
|
||||||
reject(new Error('Unable to load ' +
|
reject(new Error('Unable to load ' +
|
||||||
(this.isCompressed ? 'binary' : '') +
|
(this.isCompressed ? 'binary ' : '') +
|
||||||
' CMap at: ' + url));
|
'CMap at: ' + url));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
resolve({
|
resolve({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user