如何禁用 PDF.js 呈现的 PDF 中的超链接
How to disable hyperlinks within a PDF rendered by PDF.js
我正在研究 PDF.js 在网络应用程序中的使用。到目前为止,它满足了我们所有的业务需求。但是,管理层要求我们能够禁用 PDF 中的超链接。我们不一定要去掉蓝色文本和下划线,但如果用户单击超链接,它不应该去任何地方。
我仔细查看了 API 中的内容,但找不到任何内容。我还查看了源代码,但我没有想到可以注释掉以禁用超链接的内容。有什么方法可以禁用 PDF 中包含的超链接吗?
经过大量的实验,我发现了如何通过修改源代码来做到这一点。有一段代码开头如下:
document.addEventListener('pagerendered', function (e) {
在函数末尾的右括号之前,添加以下代码:
var allowInternalLinks = true;
var page = document.getElementById('pageContainer' + pageNumber);
var hyperlinks = page.getElementsByTagName('a');
for (var i=0; i<hyperlinks.length; i++){
if (!allowInternalLinks || hyperlinks[i].className != 'internalLink'){
hyperlinks[i].onclick = function(e) {
e.preventDefault();
}
}
};
这样做是获取呈现的页面,遍历该页面上的所有超链接,然后禁用它们。我还添加了一个布尔变量,允许您有选择地允许或禁止内部链接(即将用户带到文档中另一个位置的链接)。
我正在研究 PDF.js 在网络应用程序中的使用。到目前为止,它满足了我们所有的业务需求。但是,管理层要求我们能够禁用 PDF 中的超链接。我们不一定要去掉蓝色文本和下划线,但如果用户单击超链接,它不应该去任何地方。
我仔细查看了 API 中的内容,但找不到任何内容。我还查看了源代码,但我没有想到可以注释掉以禁用超链接的内容。有什么方法可以禁用 PDF 中包含的超链接吗?
经过大量的实验,我发现了如何通过修改源代码来做到这一点。有一段代码开头如下:
document.addEventListener('pagerendered', function (e) {
在函数末尾的右括号之前,添加以下代码:
var allowInternalLinks = true;
var page = document.getElementById('pageContainer' + pageNumber);
var hyperlinks = page.getElementsByTagName('a');
for (var i=0; i<hyperlinks.length; i++){
if (!allowInternalLinks || hyperlinks[i].className != 'internalLink'){
hyperlinks[i].onclick = function(e) {
e.preventDefault();
}
}
};
这样做是获取呈现的页面,遍历该页面上的所有超链接,然后禁用它们。我还添加了一个布尔变量,允许您有选择地允许或禁止内部链接(即将用户带到文档中另一个位置的链接)。