尽管我认为答案可能在关于 pdf 规范的其他问题的答案中,但是否可以不在嵌入式 pdf 文档中显示 adobe acrobat 工具栏?
3 回答
如果您使用除 Firefox 浏览器之外的任何浏览器,则以下代码将嵌入一个没有任何工具栏的 PDF 文件:
<embed
src="http://URL_TO_PDF.com/pdf.pdf#toolbar=0&navpanes=0&scrollbar=0"
width="425" height="425" />
- 请注意,这不适用于 Firefox
- 有关详细信息,请参阅Web Designer's Guide博客文章。
- 有关详细信息,请参阅嵌入标签参数的完整列表。
您可以使用#toolbar 隐藏工具栏上方.. 如果工具栏=0,它将禁用它.. 当工具栏=1 时,这将启用它.. 希望它会起作用。这对我有用
<embed src="filename.pdf#toolbar=0" width="500" height="375"> (Disable toolbar)
<embed src="path/filename.pdf#toolbar=1" width="500" height="375"> (Enable toolbar
不能保证在 URL中使用#toolbar=0
会起作用,因为这是使用 Adobe 查看器的浏览器所独有的,可能其他查看器甚至具有类似的参数以保持兼容性,但肯定不是每个人都遵循这一点,例如 MacOS 的浏览器浏览器或 Linux。
在大多数浏览器中,可以更改视图,这也可能不适#toolbar=0
用于浏览器,因为查看器与浏览器不同,例如 Firefox 内部有自己的查看器,并且不适用于 this #toolbar=0
,请参阅以下结果:
<iframe
src="sample.pdf#toolbar=0"
width="900"
height="200"
></iframe>
<br>
<embed type="application/pdf"
src="sample.pdf#toolbar=0"
width="900"
height="200"
>
即使它可以在 Firefox 和带有扩展的 Chrome 中使用,也可以将 PDF 查看器更改为可能不支持此参数的任何其他内容。
即使您可以删除所有想要的按钮,您仍然可以复制您的 PDF 或图像,因为在渲染之前所有内容都已下载到您的计算机,用户只需按下F12即可打开 DevTools ( Chrome / Firefox ),查看网络选项卡并过滤它以获取当前页面上加载的所有 PDF,并通过 DevTools 将 PDF 复制到它的任何文件夹。
没有办法阻止,只有阻碍。正如已经看到的,“iframe”和“embed”都无法解决,我建议(这只是一个建议)使用PDF.js。
因此,您可以创建自己的按钮、导航等,一切都将在 中运行<canvas>
,例如:
var url = 'https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf';
var pdfjsLib = window['pdfjs-dist/build/pdf'];
pdfjsLib.GlobalWorkerOptions.workerSrc = '//mozilla.github.io/pdf.js/build/pdf.worker.js';
var pdfDoc = null,
pageNum = 1,
pageRendering = false,
pageNumPending = null,
scale = 1.5,
canvas = document.getElementById('pdf-example'),
ctx = canvas.getContext('2d');
function renderPage(num) {
pageRendering = true;
pdfDoc.getPage(num).then(function(page) {
var viewport = page.getViewport({scale: scale});
canvas.height = viewport.height;
canvas.width = viewport.width;
var renderContext = {
canvasContext: ctx,
viewport: viewport
};
var renderTask = page.render(renderContext);
renderTask.promise.then(function() {
pageRendering = false;
if (pageNumPending !== null) {
renderPage(pageNumPending);
pageNumPending = null;
}
});
});
document.getElementById('page_num').textContent = num;
}
function queueRenderPage(num) {
if (pageRendering) {
pageNumPending = num;
} else {
renderPage(num);
}
}
/**
* show previous page
*/
function onPrevPage() {
if (pageNum > 1) {
pageNum--;
queueRenderPage(pageNum);
}
}
document.getElementById('prev').addEventListener('click', onPrevPage);
/**
* show next page
*/
function onNextPage() {
if (pageNum < pdfDoc.numPages) {
pageNum++;
queueRenderPage(pageNum);
}
}
document.getElementById('next').addEventListener('click', onNextPage);
/**
* PDF async "download".
*/
pdfjsLib.getDocument(url).promise.then(function(pdfDoc_) {
//Set loaded PDF to main pdfDoc variable
pdfDoc = pdfDoc_;
//Show number of pages in document
document.getElementById('page_count').textContent = pdfDoc.numPages;
renderPage(pageNum);
});
#pdf-example {
border: 1px solid black;
}
<script src="//mozilla.github.io/pdf.js/build/pdf.js"></script>
<div>
<button id="prev">Previous page</button>
<button id="next">Next page</button>
<span>Page: <span id="page_num"></span> / <span id="page_count"></span></span>
</div>
<canvas id="pdf-example"></canvas>
请注意,我曾经1.5
缩放:
scale = 1.5,
...
var viewport = page.getViewport({scale: scale});
您可以根据需要更改此设置。我建议你根据视口测量调整它(你可以window.innerWidth
用来计算),但也要做一个最小测量,这样它会适应不同的分辨率。