Warum wird unter Linux Text in PDF abgeschnitten?
Ich versuche ein @ zu formatierDatu in Jasper Reports und es funktioniert mit Windows, aber nicht mit Linux. Unter Linux wird der resultierende Text abgeschnitten.
CodeJRXML:
<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 Abhängigkeiten:
<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);
}
}
ErgebnisseErgebnis mit Windows:
Ergebnis mit Linux:
PDF-Eigenschaften:
Beide generierten PDF-Dateien haben in Acrobat Reader für Windows dieselben Schrifteigenschaften:
Wie Sie sehen, ist die Schriftart nicht eingebettet. (Die zweite Schrift "Helvetica" verschwindet, wenn ich die Abhängigkeit @ hinzufügjasperreports-fonts
und entferne AttributepdfFontName
, pdfEncoding
undisPdfEmbedded
).
Ich lese
PDF generiert mit Jasperreport nicht gut unter Linux, aber ja auf Mac, könnte das mit dem Betriebssystem zusammenhängen?http: //community.jaspersoft.com/questions/527138/pdf-text-truncated-linux-fine-windowhttp: //community.jaspersoft.com/questions/803503/why-text-filed-value-will-be-truncated-if-application-running-linuund die Lösung scheint darin zu bestehen, die Schrift einzubetten, aber es funktioniert nicht.
Ich verwende die Schriftart "Helvetica", eine der Standardschriften, und das ist der Grund, siehe Wikipedia:
Diese Schriftarten oder geeignete Ersatzschriftarten mit denselben Metriken müssen immer in allen PDF-Readern verfügbar sein und müssen daher nicht in ein PDF @ eingebettet sei
undhttps: //stackoverflow.com/a/27345103/527782:
Wenn Sie diese Schriftarten in iText verwenden, ignoriert iText den eingebetteten Parameter, da davon ausgegangen werden kann, dass Adobe Reader und andere Viewer diese Schriftarten korrekt wiedergeben können.
FrageWarum haben die gleichen Schriften unter Windows und Linux unterschiedliche Breiten? Oder warum ist das Abschneiden von Text und / oder der Zeilenumbruch anders?