gpt4 book ai didi

javascript - 如何用pdf.js发布鼠标滚轮缩放功能?

转载 作者:行者123 更新时间:2023-12-03 11:01:31 24 4
gpt4 key购买 nike

pdf.js 似乎是一个强大但糟糕的文档化工具。你们中有人知道如何用它创建缩放功能吗?我尝试了一些东西,但它没有按预期工作。这是一个 fiddle :http://jsfiddle.net/oeaLzavn/2/

这是代码:

HTML:

<div>
<canvas id="the-canvas" style="border:1px solid black"></canvas>
</div>

CSS:

canvas{
width: 500px;
/* overflow: scroll; //didn't help */
}

JavaScript:

//jQuery and pdf.js needed
$(document).ready(function () {

var url = "http://cdn.mozilla.net/pdfjs/tracemonkey.pdf";

var pdfDoc = null,
pageNum = 1,
scale = 0.8,
canvas = document.getElementById('the-canvas'),
ctx = canvas.getContext('2d');

function renderPage(num, scale) {
// Using promise to fetch the page
pdfDoc.getPage(num).then(function (page) {
var viewport = page.getViewport(scale);
canvas.height = viewport.height;
canvas.width = viewport.width;

// Render PDF page into canvas context
var renderContext = {
canvasContext: ctx,
viewport: viewport
};
page.render(renderContext);
});
}

PDFJS.getDocument(url).then(function getPdfHelloWorld(_pdfDoc) {
pdfDoc = _pdfDoc;
renderPage(pageNum, scale);
});

if (canvas.addEventListener) {
// IE9, Chrome, Safari, Opera
canvas.addEventListener("mousewheel", MouseWheelHandler, false);
// Firefox
canvas.addEventListener("DOMMouseScroll", MouseWheelHandler, false);
}
// IE 6/7/8
else canvas.attachEvent("onmousewheel", MouseWheelHandler);

function MouseWheelHandler(e) {
var e = window.event || e;
console.log(e);
var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
console.log(delta);
if (delta == 1) {
scale = scale + 0.2;
}
else {
scale = scale - 0.2;
}
renderPage(pageNum, scale);
}

});

比例参数是否错误?或者它只是一个CSS的东西?有什么想法吗?

最佳答案

您当前将 Canvas 的宽度设置为 500 像素,这意味着它的宽度始终为 500 像素。如果删除 width 属性,它将按预期缩放。

您可以使用 Overflow:scroll 在父容器上添加宽度和高度属性,以便用户可以在缩放后的 Canvas 标记周围移动。

.container {
width: 500px;
height: 500px;
overflow: scroll;
}
canvas{
min-width: 10px;
min-height: 10px;
}

JSfiddle fork

关于javascript - 如何用pdf.js发布鼠标滚轮缩放功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28068453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com