Pdf.js: Особенность: двухстраничный просмотр

Созданный на 2 окт. 2011  ·  29Комментарии  ·  Источник: mozilla/pdf.js

Запрос функции: добавить кнопки для двухстраничного просмотра
Также было бы неплохо иметь кнопку на 100% и «По размеру страницы» на панели инструментов.

1-ux 1-viewer 2-feature

Самый полезный комментарий

Вы можете протестировать его, используя предварительную сборку по адресу http://54.67.70.0 : 8877 / 5e5412c2765c9bd / web / viewer.html.

Отлично, спасибо. Чтобы проверить это, нужно выбрать «Прокрутка сетки» и уменьшить масштаб до 100%. Полученные результаты:

  1. Настройки: прокрутка сетки и настройки отображения боковой панели запоминаются при открытии нового PDF-файла, однако уровень масштабирования не запоминается (всегда по умолчанию используется автоматическое масштабирование при открытии нового PDF-файла, но это происходит и со стандартным pdf.js)
  2. Производительность: протестировано с некоторыми PDF-файлами с большим количеством текста и большими изображениями. Похоже на такую ​​же производительность, что и у стандартного pdf.js, однако стандартный pdf.js во многих случаях медленнее, чем, например, программа чтения pdf foxit, потому что недостаточно страниц «читается вперед». Это означает, что при быстрой прокрутке колесико загрузки будет видно на короткое время. Кроме того, уже прочитанные страницы не «запоминаются» в ОЗУ. При прокрутке вверх снова отображается загрузочное колесо. Но, как уже было сказано, это, похоже, проблема общего стандарта pdf.js.
  3. Совместимость: протестированы форматы не A4, один PDF-файл с разными размерами страниц. В одном нестандартном PDF-файле отсутствовало изображение заголовка, но это также произошло и со стандартным pdf.js.
  4. Технический: как и с моим стандартным FF, все работает (рендеринг субпиксельных шрифтов, аппаратное ускорение ...). Также работают: PDF / A и PDF с действиями Javascript. Не работают PDF-файлы с элементами ввода текста, но, опять же, это не работает и со стандартным pdf.js («PDF-файл содержит формулярные данные. Редактирование форумов не поддерживается»).
  5. Стресс: протестировано 50 PDF-файлов и несколько пыток с тысячами страниц.

Возможно, я бы назвал его по-другому (например, «Просмотр нескольких страниц», но я не носитель языка. Я просто не понимал, что делает этот параметр).

Вывод: версия с прокруткой сетки работает точно так же, как и стандартный несеточный pdf.js. Есть некоторые проблемы с pdf.js в целом, которые можно было бы улучшить, но они не связаны с PR с прокруткой сетки. Версия с прокруткой сетки просто великолепна, было бы просто замечательно, если бы «панель заголовка» скрывалась автоматически. В программе просмотра PDF-файлов Chrome эта панель отображается только в течение нескольких секунд при движении мыши или касании экрана. Кроме того, я уже думаю, как использовать эту версию с прокруткой сетки в качестве стандартной программы для чтения PDF-файлов, пока она не будет доступна в стабильной версии FF;)

Все 29 Комментарий

Что касается 100% и подгонки страницы, это то, что делает Adobe Reader, и я согласен, что было бы неплохо иметь это в PDF.js.

Что касается просмотра на две страницы, я тоже с этим согласен.

+1

Есть ли какая-нибудь работа в этом направлении за последние ~ 4 года?

Поскольку здесь все еще есть некоторая путаница, позвольте мне немного прояснить это. Для этого был запрос на перенос, но основная проблема заключалась в том, что это было _ очень много_ кода, потому что программа просмотра в то время не была очень модульной, и у нас не было интеграционных тестов для нее. У нас до сих пор нет интеграционных тестов для вьювера, поэтому все это нужно проводить вручную. Может показаться, что это не так, но на самом деле эту функцию сложно поддерживать. Что произойдет, если страницы будут слишком широкими? Что будет со страницами разного размера?

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

+1

Используйте кнопку реакции +1 на GitHub вместо добавления комментариев +1. Использование кнопки реакции +1 позволяет нам фильтровать проблемы, которые имеют много +1, и, таким образом, позволяет нам лучше расставлять приоритеты.

Хорошо. Я использовал кнопку реакции вместо комментария. благодаря

Я бы хотел этого, чтобы поддержать то, что я на самом деле думаю о книгах. Еще до гипертекста книги ругали за «линейность», некоторые люди даже выступали за то, чтобы получить копии книги, чтобы можно было разрезать их и наклеить гигантский плакат со всей книгой. Это был ранний проект под названием «Цифровой Шекспир», в котором все его пьесы были закодированы в виде постскриптума, чтобы вы могли «летать» над его работами. Для меня это слишком бесформенно, поэтому я обычно представляю себе наборы из десяти страниц, сгруппированных в 5 двухстраничных разворотов, расположенных как пятна на пяти гранях игральной кости, например, так:

[0 | 1] [2 | 3]
`[4 | 5]
[6 | 7] [8 | 9]

теперь есть высокий уровень, чтобы взять их и положить их в набор из сотен.

Дело в том, что у меня может быть возможность сделать это и многое другое с помощью pdf.js, но мне сначала нужно отобразить две страницы.

👍

@timvandermeij Спасибо за ваше сообщение. Я тоже очень надеюсь увидеть бета-версию этого работающего!

Что мне нужно сделать, чтобы вы добавили эту функцию? ЧТО?

Следующим шагом будет добавление автоматизированного интеграционного тестирования: # 6505

Это «хорошая ошибка для новичков, поскольку для работы с ней не требуется много знаний о кодовой базе PDF.js. Возможно, участники других проектов JS имеют опыт интеграционного тестирования, чтобы помочь нам в этом. Первым шагом будет выбор и добавление фреймворк для интеграционного тестирования ".

Есть ли причина, по которой эта функция должна быть реализована в самом pdf.js? Реализовать его в приложении для чтения, основанном на pdf.js, тривиально и не рискует испортить средство визуализации. Позвольте pdf.js обрабатывать отдельные страницы, как это обычно бывает, используйте два (или более, если необходимо) элемента холста в любой желаемой геометрии и запускайте.

Для написания упрощенной демонстрации потребовалось не более нескольких минут, на основе предыдущего / следующего примера pdf.js:

https://jsfiddle.net/Yetangitu/1egqfefu/4/

Перемещайтесь с помощью кнопок или щелкая влево / вправо страницы ...

@tfer вот ваша программа просмотра "Смешного режима": https://jsfiddle.net/Yetangitu/ht04sp3b/

(увеличить коэффициент масштабирования, вывод на большой монитор, прибыль!)

Насколько я понимаю, в pds.js нет необходимости поддерживать многостраничный рендеринг, с этим можно адекватно справиться на более высоком уровне.

@yurydelendik чем это решение сбивает с толку? Я использую его для создания программы просмотра PDF для Nextcloud / Owncloud, она отлично работает.

image

image

image

чем сбивает с толку это решение?

Это не подходит для нашей демонстрационной программы просмотра.

https://jsfiddle.net/Yetangitu/1egqfefu/4/

@Yetangitu Написание специальной программы просмотра с двухстраничным дисплеем на основе наших примеров меня совершенно устраивает, но это не пиар, с которым мы можем согласиться. Должны ли мы закрыть эту проблему, сославшись на то, что предложенное вами решение решает эту проблему? Если нет, объясните / покажите, как ваш код можно применить к программе просмотра демо.

Пожалуйста, не закрывайте этот вопрос! Бесчисленные другие проблемы были открыты и закрыты с помощью решения, которое не решает основную проблему: PDFjs остро нуждается во встроенном методе для двухстраничного просмотра. Многие PDF-файлы, такие как журнальные статьи, руководства и т. Д., Отлично смотрятся в одностраничном просмотре. Но ВСЕ КНИГИ, начиная с Гутенберга, предназначены для просмотра как макеты LR. Я использую PR # 3723 @Snuffleupagus на производственном сайте, и, хотя на данный момент он работает хорошо, он заслуживает дальнейшего развития.

@yurydelendik, это не должно было быть полным решением, это просто подсказка для тех людей, которые много лет искали программу просмотра JS PDF с возможностью распространения. Его можно интегрировать в программу просмотра демо, но для этого потребуется немного поработать. Поскольку программа просмотра, которую я создаю, предназначена для того, чтобы выглядеть и действовать (т. Е. Страница по горизонтали, выглядит как «книжная», насколько это возможно, и т. Д.), Как программа просмотра EPUB, которую я создал ранее, она сильно отличается от программы просмотра демо, поэтому она не простой вопрос исправления битов с расширением.

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

Я выпущу версию Reader с поддержкой PDF через несколько дней для тех, кто хочет попробовать эту концепцию. Поскольку Reader - это приложение Nextcloud / Owncloud, вам понадобится где-нибудь под рукой одно из них ...

@yurydelendik какая ссылка на ваш EPUB-просмотрщик. Было бы здорово, если бы существовала простая библиотека JS, которую можно было бы включить по умолчанию, чтобы упростить людям просмотр EPUB, как в настоящее время они просматривают PDF-файлы. Может это новый выпуск (или новый проект).

Сейчас 2018 год, и он колеблется уже 7 лет. Ого! Есть какие-нибудь обновления / сроки по этому поводу?

Запрос на вытягивание над вашим комментарием реализует это. Любой желающий может помочь нам протестировать его, чтобы убедиться, что ничего не сломается.

К вашему сведению, приложение Reader для Nextcloud и Owncloud теперь поддерживает PDF, включая упомянутый мною двухстраничный (разворотный) режим. Его можно найти на Github:

https://github.com/Yetangitu/owncloud-apps/tree/master/files_reader

и в репозитории приложения Nextcloud:

https://apps.nextcloud.com/apps/files_reader

Скоро он появится и в репозитории Owncloud.

image

Запрос на вытягивание над вашим комментарием реализует это. Любой желающий может помочь нам протестировать его, чтобы убедиться, что ничего не сломается.

Хотите протестировать, что вам нужно? Можно ли протестировать какой-либо двоичный объект или скомпилированное ПО? Почему бы не протестировать его в ночном бета-мастер-цикле?

К вашему сведению, приложение Reader для Nextcloud и Owncloud теперь поддерживает PDF

Круто, теперь нам просто нужно выяснить, как запустить это как отдельную программу просмотра. Суматра также может просматривать 2 страницы, но не имеет субпиксельного рендеринга. FF имеет субпиксельный рендеринг, но не имеет двухстраничного стандартного просмотра. Так что в настоящее время в Windows нет программы просмотра PDF с открытым исходным кодом: /

Вы можете протестировать его, используя предварительную сборку по адресу http://54.67.70.0 : 8877 / 5e5412c2765c9bd / web / viewer.html. Обратитесь к # 9208 для получения дополнительной информации.

Вы можете протестировать его, используя предварительную сборку по адресу http://54.67.70.0 : 8877 / 5e5412c2765c9bd / web / viewer.html.

Отлично, спасибо. Чтобы проверить это, нужно выбрать «Прокрутка сетки» и уменьшить масштаб до 100%. Полученные результаты:

  1. Настройки: прокрутка сетки и настройки отображения боковой панели запоминаются при открытии нового PDF-файла, однако уровень масштабирования не запоминается (всегда по умолчанию используется автоматическое масштабирование при открытии нового PDF-файла, но это происходит и со стандартным pdf.js)
  2. Производительность: протестировано с некоторыми PDF-файлами с большим количеством текста и большими изображениями. Похоже на такую ​​же производительность, что и у стандартного pdf.js, однако стандартный pdf.js во многих случаях медленнее, чем, например, программа чтения pdf foxit, потому что недостаточно страниц «читается вперед». Это означает, что при быстрой прокрутке колесико загрузки будет видно на короткое время. Кроме того, уже прочитанные страницы не «запоминаются» в ОЗУ. При прокрутке вверх снова отображается загрузочное колесо. Но, как уже было сказано, это, похоже, проблема общего стандарта pdf.js.
  3. Совместимость: протестированы форматы не A4, один PDF-файл с разными размерами страниц. В одном нестандартном PDF-файле отсутствовало изображение заголовка, но это также произошло и со стандартным pdf.js.
  4. Технический: как и с моим стандартным FF, все работает (рендеринг субпиксельных шрифтов, аппаратное ускорение ...). Также работают: PDF / A и PDF с действиями Javascript. Не работают PDF-файлы с элементами ввода текста, но, опять же, это не работает и со стандартным pdf.js («PDF-файл содержит формулярные данные. Редактирование форумов не поддерживается»).
  5. Стресс: протестировано 50 PDF-файлов и несколько пыток с тысячами страниц.

Возможно, я бы назвал его по-другому (например, «Просмотр нескольких страниц», но я не носитель языка. Я просто не понимал, что делает этот параметр).

Вывод: версия с прокруткой сетки работает точно так же, как и стандартный несеточный pdf.js. Есть некоторые проблемы с pdf.js в целом, которые можно было бы улучшить, но они не связаны с PR с прокруткой сетки. Версия с прокруткой сетки просто великолепна, было бы просто замечательно, если бы «панель заголовка» скрывалась автоматически. В программе просмотра PDF-файлов Chrome эта панель отображается только в течение нескольких секунд при движении мыши или касании экрана. Кроме того, я уже думаю, как использовать эту версию с прокруткой сетки в качестве стандартной программы для чтения PDF-файлов, пока она не будет доступна в стабильной версии FF;)

Для тех, кто ищет быстрый и чистый взлом, просто добавьте немного магии css в (viewer.html):

<style>
#viewer {
  margin-left:20px;
}
div.page {
  float:left;
}
</style>

Установите масштаб около 75% (= просмотр двух страниц на моем экране 1440x900)

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

Да, я согласен, мне не обязательно быть в коде pdf.js ...

Для тех, кто ищет быстрый и чистый хак, просто добавьте немного магии css на (viewer.html) ...

Спасибо за работу.

Подводя итоги, может ли кто-нибудь написать расширение, которое внедряет workaroud @icedman ? Чтобы можно было переключать вид 1p / 2p одним щелчком мыши? У меня есть расширение "Kill Sticky", которое вводит / изменяет страницу локально, так что это должно быть выполнимо.

благодаря

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

jigskpatel picture jigskpatel  ·  3Комментарии

aaronshaf picture aaronshaf  ·  3Комментарии

xingxiaoyiyio picture xingxiaoyiyio  ·  3Комментарии

dmisdm picture dmisdm  ·  3Комментарии

AlexP3 picture AlexP3  ·  3Комментарии