Какой API для создания PDF-файлов (Java) поддерживает гуджаратский шрифт?

Я пробовал iText, PDFBox и Oracle Forms. И я также добился успеха в случае iText для создания гуджаратского PDF-документа. Но, к сожалению, он не генерирует правильный шрифт на языке гуджарати (UTF-8).

У меня есть свой проект в jdk 1.4, и это обязательно для использования. Итак, мне нужна более старая версия API, поддерживающая гуджаратский шрифт.

Пожалуйста, предложите, доступен ли какой-либо вариант.

Пример кода:

public void GeneratePDFusingiText(String lStrGujaratidata)
  {
    try
    {

      BaseFont bf = BaseFont.createFont("C:\\Windows\\Fonts\\Shruti.ttf",  BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
      Font font = new Font(bf, 12);
      Document document = new Document();
      PdfWriter.getInstance(document, new FileOutputStream("D:/GeneratePDFusingiText.pdf"));
      document.open();
      document.add(new Paragraph(lStrGujaratidata, font));
      document.close();
    }
    catch(Exception e)
    {
      System.out.println("Exception while generating PDF");
      e.printStackTrace();
    }
   } 

ИЗМЕНИТЬ 1:

Возможно изображение не отображается. Он загружен здесь.

ИЗМЕНИТЬ 2:

изображение примеров шрифтов

Шаг-1) Я ввожу строку гуджарати на языке транслитерации Google.

Шаг 2) Я конвертирую его в Unicode с помощью программного обеспечения BableMap, чтобы использовать его с помощью Resourse Bundle.

Проблема. Дайте мне строку: બિલાડી (Biladi)

Это юникод: \ u0AAC \ u0ABF \ u0AB2 \ u0ABE \ u0AA1 \ u0AC0

Отметьте полужирный символ Unicode выше. Вот где у меня проблема. Теперь, если я изменю этот юникод на \ u0ABF \ u0AAC \ u0AB2 \ u0ABE \ u0AA1 \ u0AC0, он распечатает правильный вывод в формате PDF.

В то же время он печатает неправильный вывод в HTML, например: િબલાડી

Я должен управлять между ними.

Я пробовал использовать «gu» и «gu.UTF-8» и «UTF-8». Но каждый раз я получаю один и тот же результат.


person Sarang    schedule 08.05.2012    source источник
comment
Я здесь не эксперт, но я бы сказал, что наиболее важным будет шрифты - какие из них вы используете и в каком формате (TrueType и т. Д.)? Не могли бы вы привести пример скриншота того, что вы сейчас получаете?   -  person halfer    schedule 08.05.2012
comment
Я использую шрифт Shruti.ttf (гуджарати). Я редактирую вопрос для получения дополнительной информации.   -  person Sarang    schedule 09.05.2012
comment
Привет, Саранг, у вас есть ограничения на использование определенного инструмента отчетности ?? Если это не так, я использовал шрифты гуджарати с отчетами о яшме на случай, если вы можете использовать отчеты о яшме и вам нужна помощь, дайте мне знать.!   -  person Anuj Patel    schedule 09.05.2012
comment
Я не программист на Java, но на вашем месте я бы посмотрел на регион. Вы установили его на «гу» - вы пробовали UTF-8?   -  person halfer    schedule 09.05.2012
comment
@indyaah: Я видел инструмент Jasper Report. Но внутри он использует сам iText.   -  person Sarang    schedule 09.05.2012
comment
@halfer: См. следующее редактирование вопроса.   -  person Sarang    schedule 09.05.2012
comment
Вы можете предоставить файл TTF? Я не вижу в Интернете подходящего места, где можно было бы его скачать   -  person josh.trow    schedule 09.05.2012
comment
Я был бы склонен убедиться, что ввод правильный - если ваш ввод некорректно отображается в HTML, я бы не ожидал, что он будет правильно отображаться в PDF. Возможно, вам нужно посмотреть на набор символов в вашем HTML - опять же, это должен быть UTF-8. Кроме этого, у меня нет идей - но удачи!   -  person halfer    schedule 09.05.2012
comment
@Sarang: Вы пробовали PD4ML? Мы используем его для продукта нашей компании, он, кажется, работает для всего, что мы делаем. pd4ml.com/index.htm   -  person josh.trow    schedule 09.05.2012
comment
@All: Я думаю, что еще один вариант - использовать конвертер HTML в PDF. На данный момент я уже смог сгенерировать правильный HTML. Я хочу напрямую сгенерировать PDF. Но это кажется невозможным, пока у нас не будет API поддержки индийского языка. В таком случае позвольте мне попробовать HTML to PDF Convertor, если он есть. Предложите мне доступный бесплатный API.   -  person Sarang    schedule 10.05.2012
comment
@ josh.trow: Я пробую бесплатную демо-версию для того же. Позвольте мне проверить результат.   -  person Sarang    schedule 10.05.2012
comment
@sarang - вы можете попробовать Docmosis. Он использует UTF-8, и на форумах указано, что он работал с турецкими шрифтами.   -  person Paul Jowett    schedule 10.05.2012
comment
@jowierun: Спасибо. Я тоже попробую.   -  person Sarang    schedule 10.05.2012
comment
@All: любое решение с этим: support.itextpdf.com/node/83   -  person Sarang    schedule 10.05.2012
comment
почему бы вам не попробовать создать текстовый документ с содержанием гуджарати, а затем преобразовать его в PDF? Это должно быть проще.   -  person mavrav    schedule 10.05.2012
comment
@mavrav: Возможно, это тоже вариант. Позвольте мне попробовать поискать бесплатный Java API для того же.   -  person Sarang    schedule 11.05.2012
comment
Вы пытаетесь создать шаблон шрифтом гуджарати, а затем заполнить его значениями?   -  person mavrav    schedule 11.05.2012
comment
Неа. Я создаю целую книгу на гуджарати, которая позже будет преобразована в файл PDF с помощью программного обеспечения Convertor. Я хочу напрямую сгенерировать в PDF.   -  person Sarang    schedule 11.05.2012
comment
Вы можете найти аналогичный вопрос здесь - stackoverflow.com/questions/2109392/   -  person Bhavik Ambani    schedule 12.05.2012
comment
@Sarang: Каким было окончательное решение этой проблемы?   -  person IT ppl    schedule 24.03.2014
comment
У меня проблема с гуджаратскими шрифтами, кто-нибудь ее решил ?!   -  person Jay Patel    schedule 20.11.2017


Ответы (1)


Обновленный ответ

После вашего комментария я понял, что ошибался, т.е. диакритический символ должен стоять вторым в байтовой последовательности, даже если он должен отображаться слева от главного символа.

Итак, оказывается, iText не поддерживает этот тип рендеринга в наборах символов индийской кухни. Грубо говоря, iText использует Graphics2D в awt для рендеринга нелатинских символов Юникода один за другим в виде изображений в PDF. (Я думаю, это потому, что соответствующие шрифты не обязательно должны быть установлены на всех компьютерах). Эта функция не учитывает этот специальный порядок.

iText поддерживает аналогичное поведение для арабского языка, используя класс, предоставленный другим разработчиком. См. com.itextpdf.text.pdf.ArabicLigaturizer. Может быть, вы могли бы сами создать подобный? (!)

Похоже, это уже возникало раньше:

Исходный ответ

Кем чхо,

Я считаю, что iText отображает правильные символы, но первые 2 символа вашего ввода были «перевернуты» до того, как вы перевели строку в точки Unicode. Итак, проблема возникла еще до того, как данные попали в iText.

Основная проблема заключается в том, что «первый» символ является «предосновным» символом, который является разновидностью диакритического. Это немного похоже на «акцент» в европейских текстах в том смысле, что он не может существовать сам по себе, и его цель - приукрасить другого персонажа. В этом случае он превращает «Ва» (બ) в «Би».

В кодовой странице Unicode вы увидите, что первый символ (િ) действительно является кодовой точкой \ u0ABF, а второй (બ) - это \ u0AAC: http://en.wikipedia.org/wiki/Гуджар%C4%81ti_script#Unicode

Итак, где-то между Google Transliterate и вашим представлением кодовой точки эти символы были перевернуты. Итак, вам нужно посмотреть, как вы сделали этот перевод.

Как вы преобразовали эти символы в кодовые точки?

Похоже, что некоторые переводчики ставят `` предоснование '' после основного согласного, а не перед ним:

  • Обратите внимание, что когда вы вставляете эти символы в терминал (Linux), первые 2 символа выходят задом наперед. Я считаю, что нечто подобное случилось и с вами.
  • Вы также заметите, что когда вы пытаетесь отредактировать это слово в Google Transliterate, вы не можете поместить курсор между первыми двумя символами, а когда вы нажимаете Backspace, левый символ удаляется перед правым.

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

Надеюсь это поможет

person laher    schedule 13.05.2012
comment
Этот символ, конечно, переворачивается ... Но они подходят для HTML и не подходят для PDF. Вот почему мне приходится работать посередине :) - person Sarang; 14.05.2012