Использование PDFium совместно с Qt Quick для отображения PDF-документов в ОС Аврора (Алексей Федченко, OSSDEVCONF-2022) — различия между версиями
Материал из 0x1.tv
StasFomin (обсуждение | вклад) |
StasFomin (обсуждение | вклад) |
||
== Thesis ==
* https://community.omprussia.ru/open_source
[https://auroraos.ru/ ОС Аврора] — это российский POSIX-совместимый дистрибутив Linux,
предназначенный для использования на смартфонах и планшетах корпоративными заказчиками и государственными компаниями.
[https://auroraos.ru/applications Экосистема приложений ОС Аврора] обеспечивается
как стандартными приложениями, доступными на устройствах «из коробки»
(голосовые вызовы, сообщения, браузер, заметки и т. п.),
так и приложениями, разрабатываемым третьими лицами:
продуктами партнёров компании или специализированным программным обеспечением (ПО).
Одной из наиболее востребованных функции корпоративного ПО является работа с документами в формате PDF:
просмотр, аннотирование, переход по ссылкам.
Это порождает задачи, требующие интеграции функций для работы с PDF в другие приложения:
системы электронного документооборота, подпись документов, платёжные системы и др.
Поэтому возникает вопрос о том, какие доступны средства разработки,
позволяющие взаимодействовать с документами в формате PDF [https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf], [https://resources.infosecinstitute.com/topic/pdf-file-format-basic-structure], [https://www.iso.org/standard/51502.html].
Технически могут быть использованы любые POSIX-совместимые решения [https://standards.ieee.org/project/1003_1.html], [https://en.wikipedia.org/wiki/List_of_PDF_software#Linux_and_Unix].
Однако условия их применения на мобильных устройствах, которые уступают в производительности ПК,
накладывают требования к скорости работы.
А потребность использования в сторонних приложениях обуславливает необходимость пермиссивной лицензии.
В статье<ref name="fedchenko-chuvilin_fruct29">Alexey Fedchenko and Kirill Chuvilin, PDF Document Rendering on Mobile Devices in the Case of Aurora OS, book29th Conference of Open Innovations Association, p. 118—124, 2021, FRUCT</ref> описан выбор библиотеки для работы с PDF,
которая может быть использована для таких целей c учётом всех требований.
Наиболее подходящей оказалась [https://github.com/paulovap/qtpdfium PDFium] —
библиотека с открытым исходным кодом от Google,
распространяющаяся под лицензией [http://www.linfo.org/mitlicense.html MIT].
Решение, описываемое в докладе, основано именно на ней.
Основным фреймворком для разработки прикладного ПО для ОС Аврора является [https://qt.io Qt] версии 5.6 а интерфейс пользователя реализуется с помощью [https://doc.qt.io/qt-5/qmlapplications.html QML].
Это означает, что для удобства использования в приложениях нужно обеспечить совместимость PDFium и Qt.
Есть решения, которые реализуют подобное связывание:
* Библиотека [https://marketplace.qt.io/products/qtpdf QtPDF] предоставляется разработчиками Qt, но её лицензия [http://www.gnu.org/licenses/gpl-3.0.html GPLv3] требует раскрытия исходного кода конечного приложения, что делает её неподходящей для большинства прикладных коммерческих приложений.
* [https://github.com/paulovap/qtpdfium QtPDFium] — это неофициальная библиотека. Она распространяется под удобной [http://www.linfo.org/bsdlicense.html лицензией BSD], но при этом использует непубличный API и привязана к устаревшей версии PDFium. Кроме того, поддержка библиотеки прекращена.
Таким образом, для свободного использования актуальной версии PDFium совместно с Qt
потребовалось разработать новое связующее ПО.
При реализации связующего ПО и приложения его использующего,
возникает ряд задач, обусловленных как функциональными требованиями,
так и техническими ограничениями:
* как обеспечить асинхронную обработку данных, которую активно использует Qt Quick, при условии строгой однопоточности PDFium;
* как отрендерить и отрисовывать страницу, разрешение которой превышает размер видеобуфера устройства;
* как реализовать представление списка страниц с корректной прокруткой и эффективным вычислением текущего положения при условии, что страницы могут быть разных пропорций;
* как масштабировать одну страницу и список страниц;
* как сделать взаимодействие пользователя с гиперссылками и другими элементами навигации;
* каким образом реализовать выделение и копирование текстовых данных;
* как организовать работу с заметками в документе.
В докладе описываются выбранные подходы для решения указанных задач
на примере библиотеки AmberPDF и приложения Tiny PDF Viewer,
которые были реализованы и предоставляются для удобства работы c PDF в приложениях для ОС Аврора,
но также могут быть полезны и при разработке других приложений, основанных на Qt и работающих с PDF.
{{----}}
[[File:{{#setmainimage:Использование PDFium совместно с Qt Quick для отображения PDF-документов в ОС Аврора (Алексей Федченко, OSSDEVCONF-2022)!.jpg}}|center|640px]]
{{LinksSection}}
<!-- <blockquote>[©]</blockquote> -->
<references/>
[[Категория:OSSDEVCONF-2022]]
[[Категория:Draft]] |
Версия 18:10, 17 марта 2024
- Докладчик
- Алексей Федченко
В докладе описывается реализация библиотеки и приложения для просмотра PDF-документов.
Рассказывается про взаимодействие со структурой документа (страницы, текст, аннотации, заметки), а также особенности рендеринга контента (в том числе, ограничения видеобуфера, отрисовка тайлами и масштабирование). Полученное решение основано на технологиях Qt Quick и PDFium. Оно может быть удобно использовано в приложениях, написанных с использованием фреймворка Qt, в том числе для ОС Аврора.
Содержание
Видео
Презентация
Thesis
ОС Аврора — это российский POSIX-совместимый дистрибутив Linux, предназначенный для использования на смартфонах и планшетах корпоративными заказчиками и государственными компаниями.
Экосистема приложений ОС Аврора обеспечивается как стандартными приложениями, доступными на устройствах «из коробки» (голосовые вызовы, сообщения, браузер, заметки и т. п.), так и приложениями, разрабатываемым третьими лицами: продуктами партнёров компании или специализированным программным обеспечением (ПО).
Одной из наиболее востребованных функции корпоративного ПО является работа с документами в формате PDF: просмотр, аннотирование, переход по ссылкам. Это порождает задачи, требующие интеграции функций для работы с PDF в другие приложения: системы электронного документооборота, подпись документов, платёжные системы и др.
Поэтому возникает вопрос о том, какие доступны средства разработки, позволяющие взаимодействовать с документами в формате PDF [1], [2], [3].
Технически могут быть использованы любые POSIX-совместимые решения [4], [5].
Однако условия их применения на мобильных устройствах, которые уступают в производительности ПК, накладывают требования к скорости работы. А потребность использования в сторонних приложениях обуславливает необходимость пермиссивной лицензии.
В статье[1] описан выбор библиотеки для работы с PDF, которая может быть использована для таких целей c учётом всех требований. Наиболее подходящей оказалась PDFium — библиотека с открытым исходным кодом от Google, распространяющаяся под лицензией MIT. Решение, описываемое в докладе, основано именно на ней.
Основным фреймворком для разработки прикладного ПО для ОС Аврора является Qt версии 5.6 а интерфейс пользователя реализуется с помощью QML. Это означает, что для удобства использования в приложениях нужно обеспечить совместимость PDFium и Qt. Есть решения, которые реализуют подобное связывание:
- Библиотека QtPDF предоставляется разработчиками Qt, но её лицензия GPLv3 требует раскрытия исходного кода конечного приложения, что делает её неподходящей для большинства прикладных коммерческих приложений.
- QtPDFium — это неофициальная библиотека. Она распространяется под удобной лицензией BSD, но при этом использует непубличный API и привязана к устаревшей версии PDFium. Кроме того, поддержка библиотеки прекращена.
Таким образом, для свободного использования актуальной версии PDFium совместно с Qt потребовалось разработать новое связующее ПО.
При реализации связующего ПО и приложения его использующего, возникает ряд задач, обусловленных как функциональными требованиями, так и техническими ограничениями:
- как обеспечить асинхронную обработку данных, которую активно использует Qt Quick, при условии строгой однопоточности PDFium;
- как отрендерить и отрисовывать страницу, разрешение которой превышает размер видеобуфера устройства;
- как реализовать представление списка страниц с корректной прокруткой и эффективным вычислением текущего положения при условии, что страницы могут быть разных пропорций;
- как масштабировать одну страницу и список страниц;
- как сделать взаимодействие пользователя с гиперссылками и другими элементами навигации;
- каким образом реализовать выделение и копирование текстовых данных;
- как организовать работу с заметками в документе.
В докладе описываются выбранные подходы для решения указанных задач на примере библиотеки AmberPDF и приложения Tiny PDF Viewer, которые были реализованы и предоставляются для удобства работы c PDF в приложениях для ОС Аврора, но также могут быть полезны и при разработке других приложений, основанных на Qt и работающих с PDF.
Примечания и ссылки
- ↑ Alexey Fedchenko and Kirill Chuvilin, PDF Document Rendering on Mobile Devices in the Case of Aurora OS, book29th Conference of Open Innovations Association, p. 118—124, 2021, FRUCT