Как добавить инструмент ручного инструмента (захватить страницу и перетаскивание) в браузерах Chrome и Firefox PDF?

Чтобы уточнить, ручной инструмент - это функция, которую пользователь нажимает на pdf и перетаскивает, что используется для замены навигации по прокрутке.

Проблема заключается в том, что по умолчанию у браузера Chrome и Firefox нет этой функции, и я бы хотел, чтобы пользователь перетащил страницу.

Обходной путь заключается в использовании библиотеки JavaScript (Grab to Pan https://github.com/Rob--W/grab-to-pan.js в моем случае) с встраиваемым объектом (программой просмотра PDF). Когда я делаю максимальный размер pdf и пользователя, перетащите объект embed.

Проблема, с которой я столкнулась, -

  • При использовании Chrome/Firefox содержимое PDF не подходит для страницы, но автоматически изменяет размер по умолчанию, даже если я установил параметр Open PDF Open, используя iframe.

  • Код JavaScript кажется конфликтующим с программой просмотра PDF в Firefox, он работает плавно в Chrome, но не в firefox.

Вот исходный код, вы можете загрузить библиотеку из упомянутого выше ссылки и посмотреть. Не забудьте поставить "1.pdf" вместе с исходным файлом.

<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>Grab-to-pan.js demo</title>
<link rel="stylesheet" href="grab-to-pan.css" type="text/css">
<style>
* {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}
html, body {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
}
.scrollable {
    overflow: auto;
    width: 100%;
    height: 100%;
    background-color: #EEE;
}
#zoomPage {
    overflow:visible;
    width: 100%;
    height: 150%;
}
</style>
</head>
<body>
<label><input type="checkbox" id="activate-g2p" checked> Activate Grab to Pan</label>
<div class="scrollable" id="scrollable-container">
<object id = 'zoomPage' type='application/pdf' data= '1.pdf#zoom=page-fit'><p>The PDF can not display</p></object>
</div>
<script src="grab-to-pan.js"></script>
<script>
document.getElementById('activate-g2p').onchange = function() {
    if (this.checked) g2p.activate();
    else g2p.deactivate();
};

var scrollableContainer = document.getElementById('scrollable-container');
var g2p = new GrabToPan({
    element: scrollableContainer
});
g2p.activate();

</script>
</body>
</html>

Ответ 1

Я не думаю, что ты можешь. PDF загружается как внедренный объект.
Предполагая, что вы разрабатываете веб-приложение, вы можете использовать pdf.js для загрузки/просмотра PDF-документов либо с помощью собственного JavaScript, либо с помощью собственного средства просмотра. Таким образом, вам не придется беспокоиться о реализации браузером загрузки PDF-документов, и вы можете играть с ним в соответствии с вашими требованиями.

Надеюсь, что это поможет.

Ответ 2

Если вы хотите разрешить пользователю использовать любой просмотрщик PDF, который они настроили, вы не можете добавлять функции к этому средству просмотра. Если вы хотите контролировать работу зрителя, вам необходимо предоставить его самостоятельно. Это очень или иная ситуация. Попытка смешать эти два не приведет к хорошим результатам. Google и Mozilla могут свободно изменять своих зрителей в формате PDF, не задумываясь о своем сайте.

Как уже упоминалось выше, вы можете вставлять PDF.js на свой веб-сайт в соответствии с инструкциями https://github.com/mozilla/pdf.js/wiki/Setup-pdf.js-in-a-website. Я не знаю, является ли эта поддержка для просмотра в формате PDF достаточной для вашего сценария, но вы можете это проверить. Поскольку код PDF.js размещен на вашем сайте и, следовательно, под вашим контролем, вы можете редактировать его по своему усмотрению.