Джаспер сообщает с PDF и Unicode (греческий) символов - PullRequest
9 голосов
/ 19 апреля 2011

У меня очень странная проблема: я пытаюсь экспортировать отчет Jasper, содержащий символы Unicode (греческий) в PDF.Моя проблема в том, что определенный греческий символ (дельта символа) печатается шрифтом, отличным от того, который я использую (Arial)!

Следующее изображение скопировано из экспортированного файла PDF:

i dont like this

Хотя на следующем изображении показан тот же текст из MS Word, использующий тот же шрифт:

this is much better

Как видите, третья буква(дельта) отличается от других.Это происходит ТОЛЬКО для этой буквы, для всех размеров шрифта.Я также попытался изменить шрифт на garamond, но у меня все та же проблема с той же буквой!

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

Обновление 20/04/11: Я также пытался открыть PDF-файл с помощью переносного устройства Foxit Reader - но он работал точно так же, как и с Adobe Acrobat Reader.

Обновление 28/04/11: Я создал фрагмент в pastebin , который генерирует проблему при экспорте в pdf.Одно предупреждение - вам нужно «установить» шрифт, который вы будете использовать (в моем случае Arial) через «Параметры - Шрифты» iReport, иначе вы не сможете ничего увидеть в pdf.

Обновление 05/03/13 РЕШЕНИЕ: Ну, поскольку есть люди (вероятно, из Греции), у которых все еще есть та же проблема и просматривают этот вопрос, я хотел бы сделать еще одно обновление: я снова начал использовать Jasperсообщает, однако теперь я использую более новую версию Jasper (Jasper 5) и iReport (iReport 5).Теперь все работает нормально - никаких проблемных ошибок в PDF-файлах :) Так что попробуйте обновить библиотеки iReport и Jasper, если у вас возникла та же проблема !!

Обновление 05/04/13 Заключительные комментарии: Через два года я снова смог поработать над системой с проблемным греческим символом (дельта) и сделать некоторые окончательные выводы о проблеме: Итак, сначала я обновил версию Jasper, которую мы использовали, до 5.х и до сих пор испытывал проблему!Проблема была исправлена ​​только тогда, когда я изменил расширение включенного шрифта (.jar) на новое, которое я создал (экспортировал) из iReport 5.x.Таким образом, проблема заключалась в том, что при экспорте расширения шрифта iReport 3.x (который использовался для экспорта старого расширения) неправильно экспортировал дельту греческого символа, в то время как iReport 5.x хорошо ее экспортировал.Поэтому мое предложение остается верным: все, кто сталкивается с этой проблемой, обновляют вашу версию Jasper до 5.x, но также реэкспортируют ваши расширения шрифтов через iReprot 5.x.Я очень надеюсь, что больше не буду обновлять это:)

Ответы [ 2 ]

2 голосов
/ 21 декабря 2011

Расширения шрифтов. Ответ - расширение шрифта. (Ответ всегда - расширение шрифта.)

Когда я запускаю ваш отчет, я получаю другой результат: я не вижу греческих символов. Я могу решить это, изменив шрифт. Или я могу решить это, добавив Arial в качестве расширения шрифта. (Или я мог бы решить эту проблему, поместив Arial куда-нибудь в путь к классам ... но не делайте этого. Это вызывает проблемы.) Некоторое время назад я писал о расширениях шрифтов . Они были созданы, чтобы решить этот тип проблемы. Это то, что вы должны использовать.

Поскольку отчет вел себя по-разному для меня, я только в основном уверен, что это ответ. Дайте нам знать.

1 голос
/ 04 января 2013

На случай, если кто-нибудь заглянет, я столкнулся с аналогичной проблемой при создании PDF-файлов из PHP и FPDF. В моем случае проблема (и решение) была: Когда FPDF генерирует файл информации о шрифте (font.php) через MakeFont, он создает последовательность кодирования / Differences (как определено в спецификации PDF) который затем внедряется в файл PDF. В последовательности / Differences используются имена из «Списка Adobe Glyph», (http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt), который НЕ совпадает с именами символов Unicode ... Просматривая этот список, я нашел следующие записи:

Delta;2206
Deltagreek;0394  <-- this is the correct unicode point

Библиотека FPDF использовала имя «Дельта», которое (я думаю) предназначено для отображения математического символа «Дельта».

Исправив сгенерированный файл информации о шрифте .php и изменив «Delta» на «Deltagreek», проблема была решена. Вам нужно сделать это только один раз для каждого файла информации о шрифте.

Хотя вышеприведенное действительно для PDF, FPDP и PHP, я подозреваю, что у вас та же проблема с Jasper. Вам нужно проверить, как Jasper обрабатывает кодировки и т. Д.

Надеюсь, это кому-нибудь поможет:)

...