Sie können PDF.js verwenden, um das PDF auf der Seite zu rendern. PDF.js zeigt sie als Teil der Seite an, sodass Sie Ereignisse anhängen und mit ihnen auf eine Weise interagieren können, die nicht möglich wäre, wenn sie vom Acrobat-Plug-in angezeigt würde.
Ich konnte keine vorhergehende Bibliothek finden, um die Koordinaten zu bekommen, also habe ich diesen Code ausgepackt, um ihn zu implementieren.
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);
}
});
});
Sie werden es haben zwicken Koordinaten zu erhalten, die den PDF bezüglich sobald Sie es angezeigt, aber das sollte man auf dem richtigen Weg zu bekommen.
Vielen Dank für diese Antwort und Beispiel, das ist jenseits alles was ich erwartet hatte/hoffe! Ich werde es versuchen, wenn ich morgen (hoffentlich) Zeit habe und Sie wissen lassen, wie es mir geht. – chapmanio
Wenn es Ihnen geholfen hat, frei wählen zu können ;-) –
Ich habe festgestellt, wenn die Umsetzung dieses Codes und Targeting der Leinwand mit der PDF statt das gesamte Dokument verursacht das "MouseUp" -Ereignis zu scheitern. Wenn ich den Code entwerfe, um die Box zu zeichnen, während du ziehst, funktioniert das natürlich, aber ich würde es vorziehen, dies beizubehalten. Ich werde das selbst testen, aber ich habe ein Beispiel hochgeladen, falls Sie wissen, was diesen @UselessCode verursacht. tarakan.chapmanio.co.uk/pdf/pdf.html – chapmanio