Почему текст усекается в PDF с Linux?

Я пытаюсь отформатироватьДата в отчетах Jasper, и это работает с Windows, но не с Linux. В Linux результирующий текст усекается.

Код:

JRXML:

<parameter name="timestamp" class="java.util.Date"/>
[...]
<textField>
    <reportElement x="0" y="0" width="50" height="16" uuid="0007846a-26f1-457a-a198-67a2f7c8417c">
        <property name="local_mesure_unitwidth" value="pixel"/>
        <property name="com.jaspersoft.studio.unit.width" value="px"/>
        <property name="local_mesure_unitx" value="pixel"/>
        <property name="com.jaspersoft.studio.unit.x" value="px"/>
        <property name="local_mesure_unity" value="pixel"/>
        <property name="com.jaspersoft.studio.unit.y" value="px"/>
        <property name="local_mesure_unitheight" value="pixel"/>
        <property name="com.jaspersoft.studio.unit.height" value="px"/>
    </reportElement>
    <box padding="2"/>
    <textElement textAlignment="Left" verticalAlignment="Top">
        <font size="8" pdfFontName="Helvetica" pdfEncoding="Cp1250" isPdfEmbedded="true"/>
    </textElement>
    <textFieldExpression><![CDATA[DATEFORMAT($P{timestamp},"dd.MM HH:mm")]]></textFieldExpression>
</textField>

Maven зависимости:

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>5.6.0</version>
</dependency>
<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports-functions</artifactId>
    <version>5.6.0</version>
</dependency>

Джава:

private byte[] createPdf() {

    try {
        InputStream is = getClass().getResourceAsStream("MyReport.jasper");
        JasperReport jasperReport = (JasperReport) JRLoader.loadObject(is);
        Map<String, Object> parameters = new HashMap<String, Object>();
        parameters.put("timestamp", new Date());
        JRDataSource jrDataSource = new JRBeanCollectionDataSource(new Vector(), false);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, jrDataSource);
        byte[] pdf = JasperExportManager.exportReportToPdf(jasperPrint);
        return pdf;
    } catch (JRException e) {
        throw new RuntimeException("Could not create PDF.", e);
    }
}
Результаты:

Результат с Windows:

Результат с Linux:

Свойства PDF:

Оба сгенерированных PDF-файла имеют одинаковые свойства шрифта в Acrobat Reader для Windows:

Как видите, шрифт не встроен. (Второй шрифт "Helvetica" исчезает, если я добавляю зависимостьjasperreports-fonts и удалить атрибутыpdfFontName, pdfEncodingа такжеisPdfEmbedded).

Исследование:

Я читаю:

PDF, созданный с помощью jasperreport, плохо показывается в Linux, но да, в Mac. Может ли ОС быть связана?http://community.jaspersoft.com/questions/527138/pdf-text-truncated-linux-fine-windowshttp://community.jaspersoft.com/questions/803503/why-text-filed-value-will-be-truncated-if-application-running-linux

и решение, кажется, заключается в том, чтобы встроить шрифт, но это не работает.

Я использую шрифт "Helvetica", который является одним из шрифтов по умолчанию, и это причина, см.Википедия:

Эти шрифты или подходящие замещающие шрифты с одинаковыми метриками всегда должны быть доступны во всех программах чтения PDF, поэтому их не нужно внедрять в PDF.

а такжеhttps://stackoverflow.com/a/27345103/5277820:

Если вы используете эти шрифты в iText, iText будет игнорировать встроенный параметр, поскольку можно с уверенностью предположить, что Adobe Reader и другие программы просмотра могут корректно отображать эти шрифты.

Вопрос:

Почему один и тот же шрифт имеет разную ширину в Windows и Linux? Или почему усечение текста и / или перенос строк отличается?

Ответы на вопрос(2)

Ваш ответ на вопрос