Bạn có thể sử dụng PDF.js để hiển thị tệp PDF trên trang. PDF.js sẽ hiển thị nó như là một phần của trang để bạn có thể đính kèm các sự kiện và tương tác với nó theo những cách bạn không thể nếu nó được hiển thị bởi plugin Acrobat.
Tôi không thể tìm thấy thư viện từ trước để nhận tọa độ vì vậy tôi đã đánh mã này để triển khai.
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);
}
});
});
Bạn sẽ phải tinh chỉnh nó để có được tọa độ mà có liên quan đến PDF khi bạn hiển thị nó, nhưng điều này sẽ giúp bạn đi đúng hướng.
Cảm ơn bạn rất nhiều vì câu trả lời này và ví dụ, đó là bất cứ điều gì tôi mong đợi/hy vọng! Tôi sẽ cố gắng khi tôi có một chút thời gian vào ngày mai (hy vọng) và cho bạn biết cách tôi tiếp tục. – chapmanio
Nếu nó giúp bạn cảm thấy tự do để bỏ phiếu nó ;-) –
Tôi đã tìm thấy khi triển khai mã này và nhắm mục tiêu canvas hiển thị PDF thay vì toàn bộ tài liệu đang khiến sự kiện "mouseup" bị lỗi. Nếu tôi lấy ra mã để vẽ hộp khi bạn kéo nó hoạt động nhưng rõ ràng là tôi muốn giữ nó ở đúng vị trí. Tôi sẽ tiếp tục thử nghiệm bản thân mình nhưng tôi đã tải lên một ví dụ trong trường hợp bạn biết những gì có thể gây ra @UselessCode này. tarakan.chapmanio.co.uk/pdf/pdf.html – chapmanio