【发布时间】:2019-12-28 10:28:37
【问题描述】:
我正在尝试在滚动时一一呈现 pdf 中的页面,就像它们在 PDF JS 的演示中一样。我正在使用 PDF JS。我一次渲染了所有页面,但是加载所有页面需要一些时间。 所以基本上这个想法是像PDF Js的演示一样更快地加载pdf。
我分享了下面的代码,我一次渲染了所有页面,但这比预期的要多一点时间。
HTML:
<html>
<head>
<title>PDF JS Demo</title>
<style>
#holder {
width: 100%;
height: 500px;
overflow: auto;
background: #333;
text-align: center;
border: 1px solid;
margin-bottom: 25px;
}
canvas {
margin-bottom: 15px;
}
</style>
</head>
<body>
<script src="build/pdf.js"></script>
<script src="build/pdf.worker.js"></script>
<script type="text/javascript" src="build/simple.js"></script>
<div id="holder"></div>
<script type="text/javascript">
reUsableRenderPDF('build/HygieneReport_New.pdf', document.getElementById('holder'));
</script>
</body>
</html>
JAVASCRIPT:
function reUsableRenderPDF(url, canvasContainer, options) {
var options = options || { zoom: 1.0 };
function renderPage(page) {
var viewport = page.getViewport(options.zoom);
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var renderContext = {
canvasContext: ctx,
viewport: viewport
};
canvas.height = viewport.height;
canvas.width = viewport.width;
canvasContainer.appendChild(canvas);
page.render(renderContext);
}
function renderPages(pdfDoc) {
for(var num = 1; num <= pdfDoc.numPages; num++)
pdfDoc.getPage(num).then(renderPage);
}
pdfjsLib.disableWorker = true;
pdfjsLib.getDocument(url).then(renderPages);
}
【问题讨论】:
标签: javascript pdfjs