При экспорте отчета в PDF измените шрифт

Я использую Jaspersoft Studio 5.2 и сделал отчет со шрифтом Courier New, и когда я экспортирую его в PDF, он меняет шрифт на Arial< /эм>.

Я использую только инструмент Studio. При предварительном просмотре с отчетом все в порядке, а при экспорте происходит.

Что я могу сделать со своим отчетом для экспорта со шрифтом Courier New?

Моя модель textField, которую я использую в отчете:

<textField pattern="dd/MM/yyyy  HH:mm:ss">
    <reportElement uuid="f50b279a-b480-498f-8af7-be7e23c4b80b" x="415" y="11" width="105" height="10"/>
    <textElement>
        <font fontName="Courier New" size="8"/>
    </textElement>
    <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
</textField>

person Chico Luiz    schedule 07.10.2013    source источник
comment
Я просто меняю значение fontName на Courier New и больше ничего.. инструмент показывает мне, что все в порядке.. но когда я печатаю или экспортирую в pdf, всегда Arial..   -  person Chico Luiz    schedule 07.10.2013
comment
Нет простого способа сделать это автоматически, как перед вызовом JasperFillManager.fillReport(report, parameters, connection); и встраиванием всех используемых шрифтов?   -  person Beto Neto    schedule 16.03.2018


Ответы (5)


Вам следует использовать механизм Расширения шрифтов.

Шаги

Создание шрифта в Jaspersoft Studio

Вы должны создать новый шрифт в диалоговом окне Window -> Preferences:

введите здесь описание изображения

В диалоговом окне Font Family вы можете установить файл ttf для вашего шрифта:

введите здесь описание изображения

Создание стиля отчета

Вы должны создать новый стиль с помощью контекстного меню:

введите здесь описание изображения

После этого вы можете установить font для этого стиля:

введите здесь описание изображения

И после этого вы можете использовать этот новый стиль:

введите здесь описание изображения

Образец

Файл jrxml:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version last-->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="test_courier" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="2010b76c-0fe5-4a27-9c86-6846a6f9cc6a">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Sample DB"/>
    <style name="CustomFont" fontName="Courier New"/>
    <queryString>
        <![CDATA[select task from tasks]]>
    </queryString>
    <field name="TASK" class="java.lang.String"/>
    <title>
        <band height="79" splitType="Stretch">
            <staticText>
                <reportElement uuid="9205f787-f3b4-4b21-b2d9-19f52824e187" style="CustomFont" x="280" y="36" width="70" height="20"/>
                <textElement/>
                <text><![CDATA[Title]]></text>
            </staticText>
        </band>
    </title>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement uuid="f23e8674-c45d-4dc7-92f3-93e5d0b41c16" style="CustomFont" x="0" y="0" width="70" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{TASK}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

Дизайн отчета в Studio:

введите здесь описание изображения

И результатом будет (файл pdf, сгенерированный Jaspersoft Studion и открытый в Adobe Reader):

введите здесь описание изображения


Примечание.

Дополнительную информацию о расширениях шрифтов можно найти здесь

person Alex K    schedule 07.10.2013
comment
Я сталкиваюсь с тем, что арабские буквы отображаются как ????, поэтому я добавляю шрифт Arial и экспортирую как jar (тот же Alex K объясняет без стиля создания) и использую в стеклянном пути, после чего появляются арабские буквы. - person Hazim; 22.01.2019

Если ваш отчет не отображается правильно для каких-либо шрифтов, у вас могут быть проблемы с совместимостью с iReport / JasperStudio и библиотеками jasper в вашей системе. У меня возникла эта проблема при попытке экспортировать отчет в pdf с использованием файла jasper. Решение состояло в том, чтобы скомпилировать отчет внутри моего кода, как показано ниже:

    InputStream reportStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/reports.jrxml");
    JasperReport report = JasperCompileManager.compileReport(reportStream);
    jasperPrint = JasperFillManager.fillReport(report, parameters, dataSource);
person Marcelo Fonseca    schedule 13.10.2014

Такая же проблема случилась со мной. Я попробовал следующий способ найти решение -

Если вы хотите, чтобы шрифт был встроен в вашу Jasper Report программу просмотра PDF-файлов, но этот шрифт недоступен в вашем списке шрифтов, все, что вам нужно сделать, это:

  • Сначала загрузите файл .ttf вашего шрифта, который вы хотите встроить.
  • После этого перейдите к Window -> Preferences -> Jaspersoft Studio -> Fonts. Вы увидите поле для добавления файла .ttf вашего шрифта.
  • Добавьте файл .ttf вашего шрифта и отметьте Embed this font to PDF. После этого вы увидите свой шрифт в списке шрифтов с именем, которое вы дали ранее.
  • Выберите шрифт и экспортируйте его в файл .jar. И добавьте этот jar-файл вашего шрифта в путь к классам вашего приложения, если вы хотите просмотреть PDF-файл из своего приложения.

Вот и все. Спасибо.

person M. Nashath    schedule 29.12.2016

С аналогичной проблемой я столкнулся, и она была решена путем добавления требуемого файла шрифта ttf в jar или существующий файл jasperreport-fonts.jar и добавления его зависимости в приложение.

person Riaz    schedule 18.11.2020

То же самое произошло и у меня, я сделал всю настройку, как указано здесь, и это не сработало, все равно не учел файл конфигурации исходников jasperreports jasperreports_extension.properties.

В моем проекте я использую Maven для управления библиотеками Java, и в процессе сборки он выдал сообщение:

jasperreports_extension.properties already added, skipping

Итак, я помещаю файл расширения источников в первые зависимости, даже перед jasperreports.

Затем я сгенерировал проект Maven, и шрифты заработали, потому что приоритет был отдан jasperreports_extension.properties.

person Gerson Javier Castellanos Niño    schedule 26.04.2021