2013-04-01 2 views
1

Я пытаюсь изменить содержимое документа PDF с помощью PDFBox. Я использовал this example так, как есть, но заметил, что текст, который мой PDF-файл получает раскол на уровне персонажа (или хуже). Например, строка, EM? what it is: разбивается на:Разбор PDF-файла с использованием Apache PDFBox

COSString{E} 
COSString{M?} 
COSString{ } 
COSString{w} 
COSString{hat } 
COSString{it } 
COSString{is} 
COSString{:} 

(когда проверяется печатью cosString в вышеуказанном коде). Насколько я вижу, в файле есть только латинские символы, а кодировка также - ISO-8859-1. Есть идеи?

С уважением,

Salil

ответ

1

Это, скорее всего, форматированием вопрос PDF. Вот как ваш конкретный PDF хранит текст, чтобы получить правильное расстояние между буквами или для kerning. Это сильно зависит от PDF в PDF, в зависимости от того, как они были созданы.

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

+0

Да, я знаю, что могу это сделать технически, но подумайте о головной боли: сначала создайте объединенную строку, затем выполните поиск в ней, затем для каждой позиции, идите туда и замените ее ... Поскольку я необходимо заменить несколько строк, это вызовет ненужные накладные расходы. Я пробовал с 2-3 различными файлами и получил ту же проблему. Интересно, как пример кода работает для других. – Salil

+0

Я бы подумал, что там есть код, который уже решил эту проблему. Я никогда не использовал PDFBox для изменения, лично, поэтому я не уверен. –

+0

Я вижу. Спасибо за вашу помощь. Это технически правильно. +1 для этого. Я не отмечаю его как «принятого» на данный момент. – Salil