Для начала представимся.
— Меня зовут Кирилл Чувилин (@chuvilin), возглавляю отдел развития и поддержки разработчиков в «Открытой мобильной платформе» — российской компании, разрабатывающей программные продукты для мобильных устройств.
— А меня зовут Алексей Федченко (@broomcode), работаю старшим инженером-разработчиком под началом Кирилла.
В этой статье хотим рассказать о том, как мы протестировали три основные открытые библиотеки для работы с PDF-документами: Poppler, PDFium и MuPDF. Сравнили скорость рендера документов разного объёма, качество рендера, требования к технологиям разработки и условия лицензий для коммерческих продуктов на базе этих библиотек. Спойлер: победителем стала библиотека PDFium, но, как всегда, есть нюансы. Ниже обо всём по порядку.
Аврора POSIX-совместима, поэтому для неё не подходят привычные решения для Android и iOS. В то же время из-за особенностей мобильных устройств далеко не каждое десктопное решение для Linux можно перенести в Аврору.
Необходимость использования отдельной операционной системы возникает в крупных компаниях (особенно часто — в государственных организациях) в основном из-за того, что типовую мобильную ОС с открытым кодом — Android — чаще всего невозможно использовать по причине лицензионных ограничений при производстве.
Повышенные требования к безопасности, возможность работы в защищённом контуре, конфиденциальность переписки проявляются, например, при использовании офисных программ или систем электронного документооборота (ЭДО). Как раз о документах — а точнее, о PDF-документах — мы и поговорим в статье.
Скорость работы — это минимальное время, затрачиваемое на операции с документом, в том числе:
Некоторые лицензии требуют раскрывать исходный код приложения, чтобы использовать библиотеку. Они, конечно, подходят не для всех проектов.
Функциональность библиотеки:
37 страниц с графикой
1713 текстовых страниц
Быстрее всего справилась MuPDF (2,5 секунды на первый документ, 10 секунд на второй).
Poppler и PDFium оказались близки по скорости обработки простых текстовых страниц, а вот рендер векторных изображений PDFium выполняет заметно быстрее.
В целом, Poppler по скорости работы занял последнее место, MuPDF — первое, а PDFium — твёрдое второе.
На изображениях ниже показаны результаты: верхняя картинка — результат рендера, средняя — исходник, а в самом низу — рассчитанная с помощью утилиты Magick разность между изображениями (попиксельно).
Poppler collage
PDFium collage
MuPDF collage
Худший результат — снова у Poppler (17,47), на втором месте — MuPDF (24,02), а лучший показатель выдал PDFium (29,85).
Poppler популярен, но результаты показывает хуже, чем конкуренты: работает медленнее, а качество рендера получается низким. Кроме того, лицензия не позволяет разрабатывать проприетарный софт.
PDFium чуть отстаёт от MuPDF в некоторых специфических задачах, но в целом показывает такую же производительность, зато качество — выше, а лицензия не требует публикации исходного кода.
MuPDF работает быстрее всех, но лицензия требует раскрытия исходного кода финального проекта — зачастую это просто невозможно.
Источник статьи: https://habr.com/ru/company/omprussia/blog/568704/
— Меня зовут Кирилл Чувилин (@chuvilin), возглавляю отдел развития и поддержки разработчиков в «Открытой мобильной платформе» — российской компании, разрабатывающей программные продукты для мобильных устройств.
— А меня зовут Алексей Федченко (@broomcode), работаю старшим инженером-разработчиком под началом Кирилла.
В этой статье хотим рассказать о том, как мы протестировали три основные открытые библиотеки для работы с PDF-документами: Poppler, PDFium и MuPDF. Сравнили скорость рендера документов разного объёма, качество рендера, требования к технологиям разработки и условия лицензий для коммерческих продуктов на базе этих библиотек. Спойлер: победителем стала библиотека PDFium, но, как всегда, есть нюансы. Ниже обо всём по порядку.
При чём здесь ОС Аврора
Аврора — операционная система на базе Linux для планшетов и смартфонов. Её используют в крупных компаниях и государственных структурах для обеспечения безопасности информации и коммуникаций. Это единственная мобильная ОС в реестре российского ПО, сертифицированная ФСТЭК и ФСБ.Аврора POSIX-совместима, поэтому для неё не подходят привычные решения для Android и iOS. В то же время из-за особенностей мобильных устройств далеко не каждое десктопное решение для Linux можно перенести в Аврору.
Необходимость использования отдельной операционной системы возникает в крупных компаниях (особенно часто — в государственных организациях) в основном из-за того, что типовую мобильную ОС с открытым кодом — Android — чаще всего невозможно использовать по причине лицензионных ограничений при производстве.
Повышенные требования к безопасности, возможность работы в защищённом контуре, конфиденциальность переписки проявляются, например, при использовании офисных программ или систем электронного документооборота (ЭДО). Как раз о документах — а точнее, о PDF-документах — мы и поговорим в статье.
Как сравнивать библиотеки для рендера PDF
Для оценки библиотек мы использовали две группы параметров: скорость работы и качество рендера.Скорость работы — это минимальное время, затрачиваемое на операции с документом, в том числе:
- создание объекта документа (включая загрузку файла);
- создание объекта страницы;
- рендер страницы в изображение;
- загрузка аннотаций, текста, и прочей дополнительной информации.
- точность определения размеров,
- корректность рендера содержимого страницы,
- стабильность.
Некоторые лицензии требуют раскрывать исходный код приложения, чтобы использовать библиотеку. Они, конечно, подходят не для всех проектов.
Функциональность библиотеки:
- открытие документов, защищённых и не защищённых паролем;
- извлечение метаданных о документах;
- загрузка и рендеринг страниц;
- рендер страниц в произвольном масштабе для отображения миниатюр или приближения;
- рендер произвольной части страницы для tile-отображения;
- получение информации о каждой странице: размер, порядковый номер;
- получение аннотаций: тип аннотации, размер и положение на странице, цель ссылки;
- сохранение изменений пользователя для комментариев и заполнения форм;
- извлечение текста со страниц для копирования текста.
Poppler | PDFium | MuPDF | |
Технологии | C++, JavaScript, C#, PHP, Lisp | C++, C#, Python, JavaScript | C, Java |
Лицензия и ограничения | Требуется раскрытие исходного кода. Лицензия: GPLv2 | Не требуется раскрытие исходного кода. Лицензия: Apache | Требуется раскрытие исходного кода. Лицензия: AGPLv3, также есть коммерческая рецензия. |
Функции | Извлечение встроенных документов Создание перечня использованных шрифтов Извлечение изображений в исходном разрешении Извлечение метаданных Извлечение отдельных страниц Конвертация в векторный или растровый формат через Cairo Конвертация в HTML с сохранением форматирования Конвертация страницы в растровое изображение Конвертация в PS-формат Извлечение текста Объединение документов Сглаживание текста и графики Вращение страницы Рендер выделенной области | Рендер и создание документов Сглаживание текста и графики Поворот на заданный угол Перевод в монохромный режим или градации серого Зеркальное отражение | Извлечение текста Создание документов Редактирование документов Настройки рендеринга, аналогичные другим библиотекам |
Сравнение библиотек: скорость
Для сравнения скорости работы использовались 2 PDF-документа: 37-страничный с большим количеством векторных объектов (это усложняет обработку) и документ на 1713 страницах, содержащих в основном текст и таблицы. Сразу поясним: time class — временной интервал, за который срендерилась страница. Например, если страница срендерилась за 3000 мс, она попадает в интервал [2500–5000]. Столбы характеризуют количество страниц в каждом интервале (абсолютно быстрая библиотека будет иметь только один столбец минимального временного интервала). Данные получены при тестировании на смартфоне Inoi R7 с четырёхъядерным процессором Qualcomm Snapdragon 212 (APQ8009, частота 1,2 GHz) и 2 GB RAM под управлением ОС Аврора.Быстрее всего справилась MuPDF (2,5 секунды на первый документ, 10 секунд на второй).
Poppler и PDFium оказались близки по скорости обработки простых текстовых страниц, а вот рендер векторных изображений PDFium выполняет заметно быстрее.
В целом, Poppler по скорости работы занял последнее место, MuPDF — первое, а PDFium — твёрдое второе.
Сравнение библиотек: качество
Чтобы сравнить качество, мы подготовили документ в графическом редакторе Inkscape и экспортировали исходник в PDF и PNG, а по растровому файлу рассчитали коэффициент PNSR (отношение пикового сигнала к уровню фонового шума). Чем он выше, тем лучше качество картинки.На изображениях ниже показаны результаты: верхняя картинка — результат рендера, средняя — исходник, а в самом низу — рассчитанная с помощью утилиты Magick разность между изображениями (попиксельно).
Худший результат — снова у Poppler (17,47), на втором месте — MuPDF (24,02), а лучший показатель выдал PDFium (29,85).
Так чем же рендерить?
По большому счёту, всё зависит от вашей задачи.Poppler популярен, но результаты показывает хуже, чем конкуренты: работает медленнее, а качество рендера получается низким. Кроме того, лицензия не позволяет разрабатывать проприетарный софт.
PDFium чуть отстаёт от MuPDF в некоторых специфических задачах, но в целом показывает такую же производительность, зато качество — выше, а лицензия не требует публикации исходного кода.
MuPDF работает быстрее всех, но лицензия требует раскрытия исходного кода финального проекта — зачастую это просто невозможно.
Источник статьи: https://habr.com/ru/company/omprussia/blog/568704/