2016-04-27 2 views
0

У меня возникла проблема при использовании класса TextExtractor в PDFClown с появлением пустого пробела, также известного как «дискреционная новая строка». Эти символы внедряются случайным образом, но игнорируются в Acrobat Reader. Таким образом, строки, в которых присутствуют эти символы, будут показаны как одна строка в Acrobat, но будут разбиты на многие строки, когда текст будет извлечен, если я укажу '\n' как символ новой строки в TextExtractor.ToString(...).Преобразование пустой пробела в PDFClown

Похоже, что PDF-клоун просто принимает любой символ пробела и преобразует его в одно пространство или ' '. Есть ли способ обойти это преобразование, чтобы вместо этого был извлечен исходный символ?

+0

Не могли бы вы предоставить образец файла и ваш точный код? Я спрашиваю, потому что еще более вероятно, что Adobe Reader делает что-то особенное, когда * игнорирует * что-то, чем этот PDF-клоун делает что-то особенное, когда * включая * новый символ строки, но нужно проверить. – mkl

+0

@mkl Я попробую найти образец, который я могу поделиться. К сожалению, это файлы клиента, с которыми я сталкиваюсь, поэтому я не могу их публиковать. –

+0

* К сожалению, это файлы клиента, с которыми я сталкиваюсь, поэтому я могу их публиковать. * В этом случае попробуйте создать файл с одинаковой проблемой. Вероятно, есть страница (с этой проблемой) в файле клиента с некоторым общим chit-chat, который вы можете разделить и опубликовать. – mkl

ответ

1

После дополнительных исследований выяснилось, что библиотека PDFClown очень затруднительна. Существует несколько вопросов:

  • Преобразует большинство форм пробела в одно нормальное пространство персонаж.
  • Вставляет пробелы вместо строк новой строки.
  • Если вы попытаетесь использовать предоставленные переопределения, чтобы вставить свой собственный символ для пробелов или строк новой строки, внутренние сопоставления символов в извлеченном массиве в поля для каждого отдельного символа будут уничтожены.
  • Невозможно правильно декодировать все встроенные шрифты.
  • Поскольку он не может правильно декодировать встроенные шрифты, он будет молча пропускать символы из извлеченного текста.
  • Нельзя надежно обрабатывать лигатуры или разложение лигатур. Часто молча удалялся из извлеченного текста.

Прийти непосредственно к теме, которую я имел, вы можете обнаружить и удалить эти «ложные» пробельные символы, проверяя их прямоугольник, чтобы увидеть, если они перекрывают другие не пробельные символы, но учитывая все другие вопросы, с библиотека, мой совет использовать вместо этого использование PDFBox.

Если вы используете .NET и хотите использовать PDFBox, вы можете использовать Tika On Dot Net, который является проектом Apache Tika, перенесенным на .NET через IKVM.

Apache Tika - это коллекция других библиотек, включая PDFBox. В настоящее время Tika On Dot Net имеет PDFBox 1.8.10, а также пакет Nuget, который упрощает добавление в ваш проект.

У меня был проект на 1,5 недели сверх установленного срока, потому что все эти проблемы были обнаружены на полпути, что потребовало полной перезаписи. Просто голова.

+0

* Нет неуважения к автору, но PDFClown должен иметь в лучшем случае номер бета-версии. * - На самом деле версия 0.1.2 или даже 0.2.0 (которая запланирована на июль) - довольно бета-версия или даже альфа- Иш, не так ли? – mkl

+0

@mkl Отредактировано, по какой-то причине, когда я вспомнил, что видел версию, я не помню ведущего «0». ;) Виноват. –

+1

Нет проблем. Что касается других проблем, если бы у вас было достаточно времени, вы могли бы задать им индивидуальные вопросы здесь с образцовыми файлами, и проблемы могли быть разрешимы. Но, по общему признанию, после крайнего срока у вас не хватает времени ...;) – mkl

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