Использование PDFium совместно с Qt Quick для отображения PDF-документов в ОС Аврора (Алексей Федченко, OSSDEVCONF-2022) — различия между версиями
Материал из 0x1.tv
StasFomin (обсуждение | вклад) (Новая страница: «;{{SpeakerInfo}}: {{Speaker|Алексей Федченко}} <blockquote> </blockquote> {{VideoSection}} {{vimeoembed||800|450}} {{youtubelink|}} {{SlidesSect…») |
StasFomin (обсуждение | вклад) |
||
(не показано 5 промежуточных версий этого же участника) | |||
;{{SpeakerInfo}}: {{Speaker|Алексей Федченко}} <blockquote> В докладе описывается реализация библиотеки и приложения для просмотра PDF-документов. Рассказывается про взаимодействие со структурой документа (страницы, текст, аннотации, заметки), а также особенности рендеринга контента (в том числе, ограничения видеобуфера, отрисовка тайлами и масштабирование). Полученное решение основано на технологиях Qt Quick и PDFium. Оно может быть удобно использовано в приложениях, написанных с использованием фреймворка Qt, в том числе для ОС Аврора. </blockquote> {{VideoSection}} {{vimeoembed|923073078|800|450}} {{youtubelink|}} |eRiEWYX16a4}} {{SlidesSection}} [[File:Использование PDFium совместно с Qt Quick для отображения PDF-документов в ОС Аврора (Алексей Федченко, OSSDEVCONF-2022).pdf|left|page=-|300px]] {{----}} == 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]] |
Текущая версия на 05:24, 2 апреля 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