CGPDFDocument не может читать pdf

В следующем примере я просмотрел pdf в своем приложении (Xamarin.iOS). Все отлично работало до недавнего времени, я начал замечать, что некоторые PDF файлы не могут быть прочитаны с использованием этого метода.

Я открываю и получаю информацию о своем mac, и я заметил следующее:

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

Я могу экспортировать каждый файл в pdf с помощью программы просмотра Mac, но это дополнительный шаг, чем то, что мне нужно. Что я могу сделать, чтобы исправить это?

Оригинальная кодировка: PDFScanLib v1.2.2 в Adobe Acrobat 10.1.16

Экспорт кодировки: Mac OS X 10.10.5 Quartz PDFContext


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


После дополнительного тестирования я столкнулся с следующей ошибкой: Здесь Похоже, что используемое сжатие JBIG2 имеет известную ошибку, которая вызывает ошибки при чтении jpg в pdf. (Я продолжу дальнейшее тестирование, пока не найду решение.)


Исправления: сжатие PDF - это не JBIG2, а FlateDecode. После тестирования и чтения двоичных данных я заметил, что как оригинал, так и экспорт имеют один и тот же тип сжатия. (Будет обновляться с дополнительной информацией, когда я попытаюсь понять это.)

Ответ 1

Библиотека рендеринга Apple CoreGraphics имеет множество ограничений - маловероятно, что вы можете ожидать исправления для нее в разумные сроки, так как Apple выделила очень мало ресурсов для продвижения своего механизма PDF.

Мы знаем это, потому что мы работаем в этом пространстве с 2011 года и предлагаем коммерческую библиотеку для просмотра и редактирования PDF файлов под названием PSPDFKit. Мы заменили рендер Apple в версии 5 нашего iOS SDK и теперь поставляем собственный движок рендеринга - то же самое, что мы также используем для управления нашим Android SDK.

На рынке мало конкурентов, которые также используют собственный механизм визуализации - вы можете искать muPDF в качестве потенциальной альтернативы, которая также может решить вашу проблему (также коммерческую). Большинство других продуктов - это просто прокладки поверх CGPDF, которые не решают вашу проблему. Не стесняйтесь оценивать некоторые продукты и дайте мне знать, если у вас возникнут дополнительные вопросы. (Добейтесь меня на peter на pspdfkit.com)

Мы также предлагаем полные обертки для Xamarin для обеих платформ, чтобы упростить интеграцию.