Проблема с переносом текста в созданном PDF-файле - PullRequest
4 голосов
/ 01 ноября 2011

У меня есть проблема, связанная с переносом текста в формате pdf. Для всех форматов, таких как xls, rtf и pptx, отчет работает нормально, однако в pdf некоторый текст переносится, т. Е. Некоторые буквы текста, особенно последние несколько букв, печатаются в следующей строке. Я перепробовал почти все параметры в свойствах этого текста. Единственный способ уменьшить эффект - поменять имя шрифта pdf на римское для этого текста. Однако даже это не работает в некоторых случаях.

Фрагмент содержит проблему TextField:

<textField  isBlankWhenNull="true">
    <reportElement positionType="Float" x="560" y="0" width="60" height="20"/>
    <box leftPadding="2">
        <pen lineWidth="0.5"/>
        <topPen lineWidth="0.5"/>
        <leftPen lineWidth="0.5"/>
        <bottomPen lineWidth="0.5"/>
        <rightPen lineWidth="0.5"/>
    </box>
    <textElement>
        <font fontName="Arial Unicode MS"  isPdfEmbedded="false"/>
    </textElement>
    <textFieldExpression class="java.lang.String"><![CDATA[$F{CustState}]]>
    </textFieldExpression>
</textField>

Буду очень признателен, если вы поделитесь каким-нибудь решением для этого. Спасибо ...

P.s Я получаю эту проблему, когда я генерирую отчет из Ireport 4.0.2

Ответы [ 4 ]

3 голосов
/ 01 ноября 2011

Сначала используйте Font Extensions.Вероятно, ваша проблема связана с тем, что JasperReports (iText) не использует шрифт, который вы хотите использовать при создании PDF.Расширения шрифтов решают эту проблему.

Во-вторых, возможно, вы столкнулись с проблемой, которая была исправлена.Журнал изменений JasperReports 4.1.1 включает в себя:

the <b><i>net.sf.jasperreports.export.pdf.force.linebreak.policy</i></b> configuration property is now deprecated as the PDF text rendering code was refactored so that text is rendered exactly like in AWT

2 голосов
/ 10 марта 2015

Вы можете избежать этого, добавив пробел в конце текста. Я также использую jasper4.0.2, и он работал для меня.

1 голос
/ 01 ноября 2011

Некоторые элементы (TextField или StaticText) могут увеличивать свою высоту в зависимости от свойств stretch type и stretch with overflow. Но ширина элемента не может быть изменена без программирования.

Цитата из iReport Ultimate Guide:

Тип растяжения - Этот атрибут определяет, как рассчитать элемент высота при разработке отпечатка; три возможных значения как следующим образом: NoStretch - Это предопределенный тип растяжения, и он диктует, что высота элемента должна быть одинаковой. RelativeToBandHeight - Высота элемента увеличивается пропорционально увеличению размера полосы; это полезно для вертикальных линий, которые имитируют границы таблицы. RelativeToTallestObject - Элемент изменяет свою высоту в соответствии с деформацией ближайшего элемента: эта опция также используется с группой элементов, которая является механизмом группы элементов, не управляемым iReport

Растянуть с переполнением - при выборе этого параметра текстовое поле позволяет адаптировать текстовое поле по вертикали к содержимому, если элемента недостаточно для размещения всей текстовой строки.

Вы можете использовать, например, ColumnBuilder класс из DynamicJasper API для установки ширины столбца.

Вы также можете прочитать это обсуждение .

0 голосов
/ 06 июля 2015

Для вопроса обтекания текста при экспорте в PDF в iReport 4.0.2 :

Конвертируйте ваши шрифты в Jar, затем добавьте в качестве внешнего jar, определенно это будет работать.

В конструкторе iReport:

Шаг 1) Инструмент -> Опция -> Шрифты -> Установить ваши шрифты

Шаг 2) Выберите этот шрифт -> нажмите на экспорт как расширение [сделайте его в виде JAR]

Шаг 3) Зайдите в Classpath -> нажмите ADD Jar -> добавьте свой шрифт Jar -> OK

Теперь просмотрите отчет.

...