2016-06-10 6 views
1

Ich habe eine Anwendung, wo ich jasper reports-Bibliotheken für die Erstellung von Berichten aus dem Internet verwenden. Welche Schrift auch immer ich außer Helvetica verwende, um einen PDF-Bericht zu erstellen, ist ein Problem. Ich kann nicht feststellen, woher die Schriftart stammt. Ich habe keine expliziten Klassen für Helvetica oder Times-Roman.Woher bezieht sich die jasperreports-Engine auf die Schriftarten?

Es folgt der Fehler ausgelöst:

net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font : 
pdfFontName : Times-Roman 
pdfEncoding : Identity-H 
isPdfEmbedded : false 
at net.sf.jasperreports.engine.export.JRPdfExporter.getFont(JRPdfExporter.java:2036) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.export.JRPdfExporter.getChunk(JRPdfExporter.java:1818) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.export.JRPdfExporter.getPhrase(JRPdfExporter.java:1787) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.export.SimplePdfTextRenderer.getPhrase(SimplePdfTextRenderer.java:89) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.export.SimplePdfTextRenderer.render(SimplePdfTextRenderer.java:99) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.export.JRPdfExporter.exportText(JRPdfExporter.java:2158) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:861) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:821) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:698) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:420) ~[jasperreports-5.5.0.jar:5.5.0] 

Aber für den gleichen Bericht, wenn ich PDF Schriftnamen als Helvetica geben, alles läuft gut.

Kann mir bitte jemand helfen, zu verstehen, wie das funktioniert? Wenn ich eine neue Schriftart hinzufügen möchte, wo kann ich sie dann hinzufügen?

Gefolgt die Schritte eine neue Schriftart in Jaspis Schriftarten jar hinzuzufügen, erwähnt in untenstehenden Link

http://www.codesuggestions.com/java/jasper-reports/adding-custom-fonts-t ...

Frühere Fehler verschwunden. Ein neuer Fehler ist aufgetreten.

Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser 
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:121) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:88) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:103) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:61) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:179) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:81) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:276) ~[jasperreports-5.5.0.jar:5.5.0] 
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:745) ~[jasperreports-5.5.0.jar:5.5.0] 

Jasper-5.5.0.jar ist in der classspath der Anwendung, noch dieser Fehler auftritt.

+0

Schriftarten hinzuzufügen können, müssen font-Erweiterungen dies sehen verwenden http://stackoverflow.com/questions/33940126/how-can-i-display-%C2%A3%E2%84%A6%E2 % 82% AC% CE% B1% CF% 80% E2% 85% 94-in-jasperserver-pdf-using-ireport –

+0

Danke für die Antwort Petter. Ich habe die erwähnte Methode des Exports von .ttf der Schriftart als ein Glas ausprobiert und es dem Klassenpfad hinzugefügt. Aber, es hat nicht funktioniert, ich bekomme immer noch die verursacht von: java.lang.NoClassDefFoundError: Konnte net.sf.jasperreports.engine.util.JRStyledTextParser Fehler nicht initialisieren. Gibt es einen bestimmten Namen, den ich dem von iReports erstellten jar bereitstellen sollte, oder ein anderer Name? – Suhasini

+0

Welche Schriftart verwenden Sie ?, stellen Sie sicher, dass es mit der itext-Bibliothek funktioniert http://stackoverflow.com/questions/35127956/how-can-i-test-i-f-my-font-is-rendered-correctly-in- pdf. Der java.lang.NoClassDefFoundError, sagt, dass Sie eine Bibliothek vermissen, aber ich brauche mehr Stacktrace, da ich momentan nicht sehen kann, welche –

Antwort

0

Das Problem mit mir war, dass ich die Ausnahme falsch verstanden hatte! Daher die falschen Lösungen folgen.

Die Lösung in den Links, die ich befolgte, war für das Hinzufügen von benutzerdefinierten Schriftarten für FontName Attribut und nicht PDFFontName Attribut.

Jaspers PDFExporter verweist auf Schriftarten aus iText.jar. Daher hat es mir geholfen, den Methodenaufruf getFont() in meiner Klasse zu ändern.

Ich habe diese Zeile geändert und den absoluten Pfad für meine font.ttf angegeben.

font = FontFactory.getFont(
       "D\\fonts\\Arial.ttf", 
       BaseFont.IDENTITY_H, 
       BaseFont.EMBEDDED, 
       jrFont.getFontSize() * fontSizeScale, 
       pdfFontStyle, 
       forecolor 
       ); 
Verwandte Themen