您可以使用PDF.js在頁面上呈現PDF。 PDF.js會將其顯示爲頁面的一部分,以便您可以附加事件並以Acrobat插件顯示的方式與其進行交互。
我找不到一個預先存在的庫來獲取座標,所以我鞭打了這個代碼來實現它。
Live demo of selection code
$(function() {
"use strict";
var startX,
startY,
selectedBoxes = [],
$selectionMarquee = $('#selectionMarquee'),
positionBox = function ($box, coordinates) {
$box.css(
'top', coordinates.top
).css(
'left', coordinates.left
).css(
'height', coordinates.bottom - coordinates.top
).css(
'width', coordinates.right - coordinates.left
);
},
compareNumbers = function (a, b) {
return a - b;
},
getBoxCoordinates = function (startX, startY, endX, endY) {
var x = [startX, endX].sort(compareNumbers),
y = [startY, endY].sort(compareNumbers);
return {
top: y[0],
left: x[0],
right: x[1],
bottom: y[1]
};
},
trackMouse = function (event) {
var position = getBoxCoordinates(startX, startY,
event.pageX, event.pageY);
positionBox($selectionMarquee, position);
};
$(document).on('mousedown', function (event) {
startX = event.pageX;
startY = event.pageY;
positionBox($selectionMarquee,
getBoxCoordinates(startX, startY, startX, startY));
$selectionMarquee.show();
$(this).on('mousemove', trackMouse);
}).on('mouseup', function (event) {
var position,
$selectedBox;
$selectionMarquee.hide();
position = getBoxCoordinates(startX, startY,
event.pageX, event.pageY);
if (position.left !== position.right &&
position.top !== position.bottom) {
$selectedBox = $('<div class="selected-box"></div>');
$selectedBox.hide();
$('body').append($selectedBox);
positionBox($selectedBox, position);
$selectedBox.show();
selectedBoxes.push(position);
$(this).off('mousemove', trackMouse);
}
});
});
你將不得不調整它來獲取相對於一旦你顯示它的PDF座標,但是這應該讓你在正確的軌道上。
非常感謝你的回答和例子,這超出了我期待的/希望的!當我明天得到一些時間(希望)時,我會試一試,並讓你知道我如何繼續。 – chapmanio 2013-03-27 18:24:28
如果它有助於您隨意投票;-) – 2013-03-28 02:53:16
我發現,在實現此代碼時,如果將畫布顯示爲PDF而不是整個文檔,導致「mouseup」事件失敗。如果我拖出代碼來繪製該框,但顯然我更願意將其保留。我會自己繼續測試這個,但是我已經上傳了一個例子,以防你知道什麼可能導致這個@UselessCode。 tarakan.chapmanio.co.uk/pdf/pdf.html – chapmanio 2013-05-12 14:02:34