2017-01-19 4 views
0

Мы обрабатываем много входящих PDF-файлов, извлекая их страницы в отдельные файлы. И иногда мы сталкиваемся с этой странной проблемой. Каждая извлеченная страница будет почти размером всего файла. Например, если PDF составляет 500 Мбайт и имеет 1000 страниц, то извлечение из него отдельных страниц приведет к 1000 файлам по 500 мб. Хотя при открытии отдельных файлов страниц вы можете видеть только одну страницу.Как исправить этот странный искаженный pdf-выпуск

Когда мы используем функцию Adobe Acrobat Уменьшить размер файла, Adobe Acrobat занимает некоторое время и производит меньший файл. И после этого проблема извлечения страниц исправлена. Страницы начинают правильно извлекаться и имеют небольшие размеры.

До сих пор мы сталкивались с несколькими файлами и, вероятно, встретим больше.

Я попытался найти инструмент для автоматического восстановления таких файлов, и мы скачали и попробовали инструмент PODflib PLOP. К сожалению, он не исправил файл, хотя я выбрал все возможные варианты ремонта и оптимизации. Вот командная строка я использовал:

~/хлопнуть -v 4 --inputopt "xmppolicy = удалить ремонт = сила" --outputopt Оптимизировать = все --outfile fixed.pdf bad.pdf

Он не сделал устранить проблему вообще.

Вы когда-нибудь сталкивались с такими проблемами? И есть ли у вас пример того, как их исправить, используя библиотеку pdflib или любую другую библиотеку или инструмент?

+0

Как это вопрос программирования? В лучшем случае это общий программный вопрос, который более подходит для [su]. В худшем случае это рекомендация по рекомендации инструмента, которая согласно [help/on-topic] специально не соответствует теме. –

+0

Решение этой проблемы может быть в некоторой библиотеке, например pdflib. И это решение необходимо для автоматизации (а не для ручной работы). Лучшим ответом является ответ программирования. Вот почему он здесь, а не в SuperUser –

+0

В вашем вопросе ничего не говорится о программировании, и мы не можем рекомендовать инструмент или библиотеку. Вам нужно перефразировать свой вопрос или перенести его на [su]. –

ответ

1

Причина, почему такие файлы не фиксированы программ ремонта Pdf является то, что они не сломаны начать с. Они просто построены таким образом, что простые разделители PDF-файлов копируют все ресурсы (изображения, шрифты, ...) из исходного pdf-файла в каждый PDF-файл.

Подробнее ... pdf построен из множества объектов, примитивных, таких как строки и числа, и более сложных, таких как массивы и словари.

Каждая страница представляет собой словарь по ссылкам из дерева страниц. Эти словари страниц ссылаются на их соответствующие потоки контента, которые содержат инструкции по созданию страницы. Эти инструкции не все автономны, однако они могут ссылаться на ресурсы, такие как шрифты и растровые изображения по имени. Такие ресурсы просматриваются в словаре ресурсов, который также ссылается на словарь страниц.

Но ресурсный словарь не требуется содержать ресурсы только для самой страницы, на которую он ссылается, могут быть больше и такие дополнительные записи, которые не используются на странице, просто игнорируются при ее рисовании.

Это позволяет производителям PDF просто положить все ресурсы для всего PDF в словарь одного ресурса который затем ссылаются все словарями страниц, и некоторые производители PDF действительно сделать это. Созданные таким образом Pdf-файлы беспокоят вас.

С другой стороны Pdf разветвители обычно предположить что словарь ресурс ссылки со страницы содержит только ресурсы для этой самой страницы и, следовательно, просто скопировать весь словарь ресурсов в разделенном файл для этой страницы.

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

Для возврата к фокусу переполнения стека, программирование, то, что нужно реализовать это рутина, которая

  • читает PDF,

  • для каждой страницы разбирает потоки контента для использованного ресурса имена,

  • заменяет соответствующий словарь ресурсов каждой страницы одного, который содержит только записи, используемые на этой странице, и

  • снова сохраняет этот измененный pdf-файл.

Применение такой программы к PDF перед расщеплением должно предотвратить проблему.


P.S .: ситуация на самом деле является немного более сложным, как не только страницы, есть словари ресурсов, но и другие объекты, такие как аннотации, формы XObjects и узоры. Они также должны обрабатываться. Кроме того, информация о странице может отображаться не только в самом словаре страниц, но также может быть унаследована от предков до корня дерева страниц. Но это всего лишь детали ...

Смежные вопросы