Ваш вызов canvas.addImage передает 0, 0 в качестве координат x и y.Вместо этого вы должны передавать свои правильно переведенные координаты из координат мыши.Помните, что в PDF все рассчитывается снизу, поэтому y = 0 - это нижняя часть страницы, а не верхняя часть.
Кроме того, возможно, есть лучший способ выполнить штамповку, используя некоторые примеры из iText.как вы найдете здесь: https://developers.itextpdf.com/question/how-stamp-image-existing-pdf-and-create-anchor
PdfReader readerOriginalDoc = new PdfReader("src/main/resources/test.pdf");
PdfStamper stamper = new PdfStamper(
readerOriginalDoc, new FileOutputStream("NewStamper.pdf"));
PdfContentByte content = stamper.getOverContent(1);
Image image = Image.getInstance("src/main/resources/images.jpg");
image.scaleAbsolute(50, 20);
image.setAbsolutePosition(100, 100);
image.setAnnotation(new Annotation(0, 0, 0, 0, 3));
content.addImage(image);
stamper.close();
ОБНОВЛЕНИЕ: Вот пример того, как решить, какое расположение PDF должно быть основано на сообщенном позиционировании браузера:
docHeight = something; // however you choose to find the height of your document area
docWidth = something; // however you choose to find the width of your document area
mouse_top = e.clientY;
mouse_left = e.clientX;
percentTop = mouse_top / docHeight;
percentLeft = mouse_left / docWidth;
ОБНОВЛЕНИЕ:ширина и высота могут быть определенным элементом в вашей разметке или во всем документе.Таким образом, вы можете получить ширину и высоту следующим образом:
var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
Теперь передайте эти проценты бэкэнду, и вы можете работать в обратном порядке, чтобы найти ваши координаты PDF:
float percentBottom = 100.0 - Float.valueOf(request.getParameter("percentTop"));
float percentLeft = Float.valueOf(request.getParameter("percentLeft"));
Нижняя частьтеперь переводится в процентах от общей высоты, которую вам нужно поднять снизу страницы, чтобы получить правильную верхнюю позицию.Левая позиция должна быть одинаковой в процентном отношении.Я надеюсь, что это помогает.