$(document).on('viewerLoaded', function() {
var addedForPages = {};
var docViewer = readerControl.docViewer;
var urlRegex = /[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g;
docViewer.on('pageComplete', function(e, pageIndex) {
if (addedForPages[pageIndex]) {
return;
}
addedForPages[pageIndex] = true;
var doc = docViewer.getDocument();
doc.loadPageText(pageIndex, function(text) {
while ((match = urlRegex.exec(text)) != null) {
var startIndex = match.index;
var endIndex = startIndex + match[0].length;
doc.getTextPosition(pageIndex, startIndex, endIndex, function(quads) {
var firstChar = quads[0];
var lastChar = quads[quads.length - 1];
var topLeft = { x: Math.min(firstChar.x1, firstChar.x3), y: Math.min(firstChar.y1, firstChar.y3) };
var bottomRight = { x: Math.max(lastChar.x1, lastChar.x3), y: Math.max(lastChar.y1, lastChar.y3) };
var link = new Annotations.Link({
rect: [topLeft.x, topLeft.y, bottomRight.x, bottomRight.y]
});
link.PageNumber = pageIndex + 1;
link.addAction('U', new Actions.URI({uri: match[0]}));
var annotManager = docViewer.getAnnotationManager();
annotManager.addAnnotation(link);
annotManager.drawAnnotations(link.PageNumber, null, true);
});
}
});
});
});