È possibile utilizzare PDF.js per eseguire il rendering del PDF sulla pagina. PDF.js lo visualizzerà come parte della pagina in modo da poter allegare eventi e interagire con esso in modi che non potresti se fosse visualizzato dal plug-in Acrobat.
Non sono riuscito a trovare una libreria preesistente per ottenere le coordinate, quindi ho implementato questo codice per implementarlo.
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);
}
});
});
Si dovrà modificarlo per ottenere le coordinate che sono relativi al PDF, una volta si visualizza, ma questo dovrebbe farti sulla strada giusta.
Grazie mille per questa risposta ed esempio, è oltre tutto ciò che mi aspettavo/speravo! Darò una prova quando avrò un po 'di tempo domani (si spera) e ti farò sapere come andrò avanti. – chapmanio
Se ti ha aiutato a sentirti libero di votarlo ;-) –
Ho trovato quando implementare questo codice e il targeting del canvas che visualizza il PDF piuttosto che l'intero documento sta causando il fallimento dell'evento "mouseup". Se tolgo il codice per disegnare la casella mentre lo trascini, ma ovviamente preferirei tenerlo a posto. Continuerò a testarlo da solo ma ho caricato un esempio nel caso in cui tu sappia cosa potrebbe causare questo @UselessCode. tarakan.chapmanio.co.uk/pdf/pdf.html – chapmanio