Получение координат мыши из встроенного элемента объекта pdf - PullRequest
0 голосов
/ 07 мая 2020

Я сделал несколько редакторов PDF, для которых вы заполняете форму ASP. NET, и она заполняет PDF-файл для загрузки. В настоящее время все координаты для вывода текста необходимо вводить вручную методом проб и ошибок, что далеко от идеала.

Итак, чтобы немного упростить задачу, я пытаюсь создать визуальный редактор в ASP. NET для получения этих координат. В настоящее время идея состоит в том, чтобы встроить файл PDF в атрибут данных элемента <object> и щелкнуть и перетащить мышь, чтобы выбрать область для нового поля.

Проблема, с которой я столкнулся, заключается в что элемент <object>, похоже, работает так же, как iframe в том смысле, что я не могу получить доступ ни к одному из событий в нем.

Например:

На следующей странице теоретически должен быть указан X и координаты Y при нажатии внутри <object>. Если вы быстро щелкните перед его загрузкой, вы получите результат для div, инкапсулирующего <object>. Затем, после загрузки PDF-файла, больше ничего не происходит.

Formbuilder.cs html

<h2>Form Builder Prototype</h2>
<p id="demo"></p>


<div class="embed-responsive embed-responsive-16by9" onclick="showCoords(event)">

    <object class="embed-responsive-item" data="@Url.Action("GetPdfForm", "admin")" type="application/pdf" width="100%" height="100%">
        Click @Html.ActionLink("here", "GetPdfForm", "admin") to view the file.
    </object>

</div>


@section Scripts    {
    <script>
        function showCoords(event) {
            console.log(event);
            var x = event.clientX;
            var y = event.clientY;
            var coor = "X coords: " + x + ", Y coords: " + y;
            document.getElementById("demo").innerHTML = coor;
        }

        function clearCoor() {
            document.getElementById("demo").innerHTML = "";
        }
    </script>
}

AdminController.cs

public ActionResult GetPdfForm()
{
    var fileName = Server.MapPath(ORIGINAL_FORM_V65);

    var fs = System.IO.File.ReadAllBytes(fileName);

    return File(fs, "application/pdf", null);
}

Итак, у меня к вам следующие вопросы:

  1. Есть ли уже передовая практика или даже библиотека для такой вещи?
  2. Если элемент объекта недоступен, как iframe, можно ли вместо этого наложить div?

Я собираюсь пока поиграть с z-индексами и посмотреть, решит ли это проблема, но в идеале я мог бы использовать решение, которое напрямую работает с pdf. Я не очень-то разбираюсь в том, как представлен PDF-файл, поэтому, если есть способ сделать это лучше, я все слышу!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...