将 PDFObject 与 PDF.js 一起使用时隐藏打印按钮
Hide print button when using PDFObject with PDF.js
我在使用 pdf.js 呈现文件时尝试使用打印按钮和其他按钮。我尝试使用 CSS,它适用于 Chrome,但不适用于 Internet Explorer。对于 Internet Explorer,我使用 javascript。当我加载一个文件时 JS 工作,但后续文件仍然显示按钮。
viewer.html
<script type="text/javascript">
$(function () {
$('#print').hide();
$('#viewBookmark').hide();
$('#openFile').hide();
});
</script>
viewer.css
button#openFile, button#print, a#viewBookmark {
display: none;
}
default.cshtml
$('.file').on('click touchend', function (e) {
e.preventDefault();
if ($(this).hasClass('disabled'))
return;
var path = $(this).data('path').replace("\\", "http://").replace("@pdfFolder", "Uploads");
var name = $(this).data('name');
var lastname = $(this).data('lastname');
name = name.length > 8 ?
name.substring(0, 5) + '...' :
name.substring(0, 8);
lastname = lastname.length > 8 ?
lastname.substring(0, 5) + '...' :
lastname.substring(0, 8);
var tabCount = $('#tabs li').size();
var uuid = guid();
$(this).attr('data-position', uuid);
$('#content').css('display', 'block');
if (tabCount === 5) {
$('#maximumTabsModal').modal('show');
} else {
$(this).addClass('disabled')
$('<li role="presentation" data-position="' + uuid + '"><a href="#panel' + uuid + '" aria-controls="panel"' + uuid + ' role="tab" data-toggle="tab">' + name + '<span class="close"></span><br/>' + lastname + '</a></li>').appendTo('#tabs');
$('<div class="tab-pane" id="panel' + uuid + '"><div id="pdf' + uuid + '" class="pdf"></div></div>').appendTo('.tab-content');
$('#tabs a:last').tab('show');
var options = {
//pdfOpenParams: {
// view: "FitV"
//},
forcePDFJS: true,
PDFJS_URL: "pdfjs/web/viewer.html"
};
var pdf = PDFObject.embed(path, '#pdf' + uuid, options);
$('#print').hide();
$('#viewBookmark').hide();
$('#openFile').hide();
$('#exd-logo').hide();
}
});
遗憾的是,PDFObject 不能隐藏打印按钮,它只提供了一种指定 PDF 打开参数的机制,不包括隐藏打印按钮的功能。
我不是 PDF.js 方面的专家,但由于它都是基于 JS 的,并且托管在您的域中(即您拥有完整的脚本访问权限),您应该能够找到破解它的方法删除打印按钮。祝你好运!
我能够通过处理 PDF.js 提供的 pagerendered 事件来隐藏按钮。
viewer.html
<script type="text/javascript">
$(function () {
document.addEventListener("pagerendered", function (e) {
$('#print').hide();
$('#viewBookmark').hide();
$('#openFile').hide();
});
});
</script>
我在黑暗中拍摄,因为我不知道 PDF 查看器是否以 <iframe>
加载,但以下代码将无限期地扫描页面并禁止显示打印按钮它找到了。
var $printSearch = setInterval(function() {
if ($('#print').length > 0 || $('#print').is(':visible')) {
hidePrint();
} else {
//doNothing
console.log('Searching...');
}
}, 150);
function hidePrint() {
$('div#print').css('display', 'none');
}
如果它 确实 在 iframe 中加载,我们可以使用 .contents()
和 .filter()
jQuery 方法来定位那些难以捉摸的按钮。
我在使用 pdf.js 呈现文件时尝试使用打印按钮和其他按钮。我尝试使用 CSS,它适用于 Chrome,但不适用于 Internet Explorer。对于 Internet Explorer,我使用 javascript。当我加载一个文件时 JS 工作,但后续文件仍然显示按钮。
viewer.html
<script type="text/javascript">
$(function () {
$('#print').hide();
$('#viewBookmark').hide();
$('#openFile').hide();
});
</script>
viewer.css
button#openFile, button#print, a#viewBookmark {
display: none;
}
default.cshtml
$('.file').on('click touchend', function (e) {
e.preventDefault();
if ($(this).hasClass('disabled'))
return;
var path = $(this).data('path').replace("\\", "http://").replace("@pdfFolder", "Uploads");
var name = $(this).data('name');
var lastname = $(this).data('lastname');
name = name.length > 8 ?
name.substring(0, 5) + '...' :
name.substring(0, 8);
lastname = lastname.length > 8 ?
lastname.substring(0, 5) + '...' :
lastname.substring(0, 8);
var tabCount = $('#tabs li').size();
var uuid = guid();
$(this).attr('data-position', uuid);
$('#content').css('display', 'block');
if (tabCount === 5) {
$('#maximumTabsModal').modal('show');
} else {
$(this).addClass('disabled')
$('<li role="presentation" data-position="' + uuid + '"><a href="#panel' + uuid + '" aria-controls="panel"' + uuid + ' role="tab" data-toggle="tab">' + name + '<span class="close"></span><br/>' + lastname + '</a></li>').appendTo('#tabs');
$('<div class="tab-pane" id="panel' + uuid + '"><div id="pdf' + uuid + '" class="pdf"></div></div>').appendTo('.tab-content');
$('#tabs a:last').tab('show');
var options = {
//pdfOpenParams: {
// view: "FitV"
//},
forcePDFJS: true,
PDFJS_URL: "pdfjs/web/viewer.html"
};
var pdf = PDFObject.embed(path, '#pdf' + uuid, options);
$('#print').hide();
$('#viewBookmark').hide();
$('#openFile').hide();
$('#exd-logo').hide();
}
});
遗憾的是,PDFObject 不能隐藏打印按钮,它只提供了一种指定 PDF 打开参数的机制,不包括隐藏打印按钮的功能。
我不是 PDF.js 方面的专家,但由于它都是基于 JS 的,并且托管在您的域中(即您拥有完整的脚本访问权限),您应该能够找到破解它的方法删除打印按钮。祝你好运!
我能够通过处理 PDF.js 提供的 pagerendered 事件来隐藏按钮。
viewer.html
<script type="text/javascript">
$(function () {
document.addEventListener("pagerendered", function (e) {
$('#print').hide();
$('#viewBookmark').hide();
$('#openFile').hide();
});
});
</script>
我在黑暗中拍摄,因为我不知道 PDF 查看器是否以 <iframe>
加载,但以下代码将无限期地扫描页面并禁止显示打印按钮它找到了。
var $printSearch = setInterval(function() {
if ($('#print').length > 0 || $('#print').is(':visible')) {
hidePrint();
} else {
//doNothing
console.log('Searching...');
}
}, 150);
function hidePrint() {
$('div#print').css('display', 'none');
}
如果它 确实 在 iframe 中加载,我们可以使用 .contents()
和 .filter()
jQuery 方法来定位那些难以捉摸的按钮。