Por que o texto é truncado em PDF com Linux?
Eu tento formatar umEncontro no Jasper Reports e funciona com Windows, mas não com Linux. No Linux, o texto resultante é truncado.
Código: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>
Dependências do 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>
Java:
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);
}
}
Resultados:Resultado com o Windows:
Resultado com o Linux:
Propriedades do PDF:
Os dois arquivos PDF gerados têm as mesmas propriedades de fonte no Acrobat Reader para Windows:
Como você pode ver, a fonte não está incorporada. (A segunda fonte "Helvetica" desaparece se eu adicionar dependênciajasperreports-fonts
e remover atributospdfFontName
, pdfEncoding
eisPdfEmbedded
)
Eu li:
O PDF gerado com o jasperreport não aparece bem no Linux, mas sim no Mac, o sistema operacional pode estar relacionado?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-linuxe a solução parece ser incorporar a fonte, mas não funciona.
Eu uso a fonte "Helvetica", que é uma das fontes padrão e é por esse motivo, consulteWikipedia:
Essas fontes, ou fontes substitutas adequadas com as mesmas métricas, sempre devem estar disponíveis em todos os leitores de PDF e, portanto, não precisam ser incorporadas a um PDF
ehttps://stackoverflow.com/a/27345103/5277820:
Se você usar essas fontes no iText, o iText ignorará o parâmetro incorporado, porque é seguro supor que o Adobe Reader e outros visualizadores possam renderizar essas fontes corretamente.
Pergunta, questão:Por que ter a mesma fonte de larguras diferentes no Windows e Linux? Ou por que o texto é truncado e / ou quebra de linha diferente?