В вашем вопросе есть некоторые противоречия. Вы говорите, что используете iText 5.3.5, но упоминаете com.lowagie.text.pdf
, который использовался только в версии 2.1.7 и более ранних версиях.
Вы также ожидаете, что версии, предшествующие iText 7, поддерживают Tamil. Это не тот случай. Если вам нужна поддержка тамилов, вам понадобится хотя бы iText 7 (доступно как программное обеспечение AGPL) в сочетании с PdfCalligraph: http://itextpdf.com/itext7/pdfCalligraph
Возьмите посмотрите на следующий снимок экрана, чтобы увидеть разницу между написанием Тамил без аддона против тамильского с аддоном:
PdfCalligraph - это аддон к iText 7. Он недоступен в качестве программного обеспечения с открытым исходным кодом.
От моего понимания этого readLine должен возвратить пустой указатель в первый раз, когда никакой вход не вводится кроме линейного окончания, как '\r'.
Это не корректно. readLine
возвратится null
если конец потока достигнут. Таким образом, например, если Вы читаете файл и концы файла, или если Вы читаете из сокета и завершений сокета.
Но если Вы просто читаете консольный вход, поражение клавиши Return на Вашей клавиатуре не составляет конец потока. Это - просто символ, который возвращается (\n
или \r\n
в зависимости от Вашей ОС).
Так, если Вы хотите повредиться и на пустой строке и на конце строки, необходимо сделать:
while (line != null && !line.equals(""))
Кроме того, Ваша текущая программа должна работать как ожидалось при передаче по каналу некоторого файла непосредственно в нее, как так:
java -cp . Echo < test.txt
Никакой вход не является тем же как концом потока. Можно обычно моделировать конец потока в консоли путем нажатия Ctrl+D (AFAIK, некоторые системы используют Ctrl+Z вместо этого). Но я предполагаю, что это не то, что Вы хотите, таким образом, лучше тестируют на пустые строки дополнительно к пустым строкам.
Существует хорошее апачское свободное городское население библиотека Ленга, которая имеет хороший API для общего :) действий. Вы могли использовать, статически импортируют StringUtils и используют его метод isNotEmpty (Строка) для получения:
while(isNotEmpty(line)) {
System.out.println(line);
line = br.readLine();
}
Это могло бы быть полезно когда-нибудь:) В этом lib существуют также другие полезные классы.