Лучшее сжатие PDF/разделение PDF/объединение PDF/оптимизация библиотеки PDF?

Ниже приведены ключевые функции, которые мы ожидаем получить от библиотеки PDF:

  • Лучшее сжатие (которое может обрабатывать все типы PDF-файлов)
  • Обрезка
  • Разделение
  • сшивание

Ниже приведены библиотеки, которые я пробовал до сих пор:

  • ILovePDF - PHP (все функции, связанные со сжатием, работают нормально, поддержка вызывает беспокойство, нам нужен еще более высокий уровень сжатия, подробная документация отсутствует).
  • hummus - NodeJS (сжатие не работает должным образом, оно портит шрифты/контент PDF)

Пожалуйста, предложите любые другие ( лучшие в отрасли ) библиотеки обработки PDF с вышеупомянутыми функциями. Меня устраивает любая платная библиотека.

Любая помощь ценна...

Под «Лучшим сжатием» вы подразумеваете наименьший размер? или лучшее качество по размеру? Формат PDF поддерживает ряд расширенных алгоритмов сжатия, лучший выбор которых зависит от того, является ли изображение монохромным/серым/цветным. Почему обрезка/разделение/сшивка важны для вас? Почему компрессия важна для вас?
Спасибо @Ryan. На самом деле мы планируем предоставить три типа сжатия: 1. Наименьший размер 2. Меньший размер, но и лучшее качество 3. Лучшее качество Примечание: это нормально для нас, если мы должны использовать разные библиотеки для разных вариантов. Разделение и сшивка важны, потому что мы передаем эти PDF-файлы на мобильную платформу по одной странице за раз, а с другой стороны, для веб-конца мы должны предоставить браузеру полный PDF-файл. Теперь дело в том, что сторонний поставщик PDF может предоставить PDF либо в целом PDF сразу, либо в отдельных файлах страниц. Мы должны сделать либо плевать/объединять для всех PDF-файлов.
Спасибо за разъяснения по поводу оптимизации. «Разделение и сшивка важны, потому что мы передаем эти PDF-файлы на мобильную платформу в виде 1-1 страницы за раз, а с другой стороны, для веб-конца мы должны предоставить браузеру полный PDF-файл». Средство просмотра на мобильном устройстве или в браузере? Почему так важно предоставлять PDF по одной странице за раз? Есть способы просматривать очень большие PDF-файлы (например, школьный учебник) на мобильных устройствах (как в родном, так и в браузере).
Спасибо, @Ryan, пользователи используют нативные мобильные приложения как для IOS/Android, так и не используют браузер, но они также могут посещать мобильные сайты, но пока это не наша забота, май в будущем. 1-1-страничный PDF-файл необходим, чтобы пользователь не ждал, пока весь файл загрузится и увидит. Как только одна страница загружена, он должен увидеть. Мы не можем позволить пользователю ждать завершения большого файла. Я надеюсь, что приведенное выше требование может прояснить ваши сомнения.

Ответы (2)

Я бы предложил PDFsam и некоторые его дополнительные компоненты.

PDFsam означает разделение и слияние PDF.

Базовый пакет бесплатен, но есть и расширенные версии, позволяющие делать некоторые вещи, которые вы запрашиваете. Расширенные версии не бесплатны, и цена зависит от уровня улучшения.

Эта программа работает при запуске и в фоновом режиме. Нет значка в системном трее или чего-либо еще, указывающего на то, что он работает. Для меня это делает его шпионским ПО, и поэтому его следует избегать.

У PDFTron на самом деле есть несколько вариантов для вас. Серверная часть, нативная мобильная версия и HTML5.

PDFNet SDK для Linux / Android / iOS может оптимизировать, разделять, обрезать, сшивать.

Специально для оптимизации существует класс Optimizer, который можно настроить различными способами, чтобы минимизировать размер файла. https://www.pdftron.com/pdfnet/samplecode/OptimizerTest.sphp.html https://groups.google.com/d/msg/pdfnet-sdk/rx3j4aYed_A/pUhdwwcLAAAJ

Для разделения, обрезки и сшивания см. следующие примеры кода. https://www.pdftron.com/pdfnet/samplecode/ImpositionTest.sphp.html https://www.pdftron.com/pdfnet/samplecode/PDFPageTest.sphp.html

Однако, если ваша цель — просто просмотреть PDF-файл на мобильном устройстве , либо в исходном виде, либо в браузере, то это возможно без необходимости разбивать документы.

Используя PDFNet SDK для Android/iOS, вы можете вызвать PDFViewCtrl. openUrlAsync и просто передайте URL-адрес PDF. Если имеются в виду следующие условия, то просмотр/взаимодействие будет практически мгновенным.

  1. PDF сохраняется как линеаризованный (Fast Web View)
  2. Сервер, на котором размещен PDF-файл, поддерживает заголовки запроса диапазона байтов.

Вы можете использовать PDF SDK, например PDFNet, чтобы обеспечить линеаризацию PDF-файлов на вашем сервере (быстрый веб-просмотр).

У нас есть бесплатное демонстрационное приложение под названием Xodo , работающее на базе PDFNet и доступное во всех мобильных магазинах, которое вы можете установить и оценить.

Другой вариант, который будет работать как с нативным, так и с веб-сайтом на мобильных устройствах, — это решение PDFTron WebViewer . WebViewer — это программа для просмотра документов на чистом HTML5 . Вам нужно будет преобразовать PDF-файл в веб-оптимизированный формат на вашем сервере, но после этого и при условии, что сервер, на котором размещен PDF-файл, принимает заголовки запроса диапазона байтов, тогда WebViewer будет отображать страницы почти мгновенно, но никогда не загружает полностью весь документ. Это означает, что даже на iPhone или телефоне Android ваши пользователи могут просматривать PDF-файл размером 1 ГБ, содержащий сотни страниц, и они могут перейти на любую страницу для немедленного просмотра (произвольный доступ).

Пожалуйста, посмотрите эту презентацию, чтобы узнать больше о WebViewer. https://prezi.com/view/Aug5ft1twZNNKfBXfTIQ/

Если вы хотите попробовать наш собственный мобильный SDK, включая готовые демо-версии APK, заполните эту форму. https://www.pdftron.com/pdfnet/mobile/request_trial.html

Если вас интересует серверный PDFNet SDK, вы можете скачать его здесь. https://www.pdftron.com/pdfnet/downloads.html

Если вы хотите узнать больше, обращайтесь в отдел продаж или в службу поддержки PDFTron.

Спасибо @Ryan, спасибо за ваш ценный ответ, мне очень жаль, но на самом деле я забыл упомянуть еще одну важную причину, которая требует разделения PDF на отдельные страницы, а именно размещение рекламы на каждой странице. Итак, если мы напрямую покажем этот PDF-файл, мы не сможем разместить рекламу.
Почему страницы должны быть разделены, чтобы разместить рекламу на каждой странице? Накладывать видео/контент поверх страниц просто. Либо плавающие, либо даже фиксированные на странице. Возможно, вы могли бы уточнить, что именно вы подразумеваете под «размещением рекламы на каждой отдельной странице».