2017-10-20 4 views
3

Ich benutze Jasper jar, um einen Bericht über mein J2EE-Projekt zu erstellen. Ich kann die PDFs erfolgreich ohne Probleme erstellen. Ich möchte jedoch, dass der Name der Schriftart für alle meine PDFs basierend auf Einstellungen, die wir an einer Stelle konfigurieren, dynamisch geändert wird.Wie kann der Name der Schriftart dynamisch geändert werden?

Ich kam zu Conditional Stil, der nützlich ist, um dies zu erreichen. Allerdings habe ich Hunderte von Schriftarten, die nicht an jedem Ort konditionell gestylt werden können. Dies wird den Bericht am schlimmsten machen.

Ich bin auf der Suche nach einer geeigneten Lösung, die mir hilft, die Schriftarten auf Jaspis PDFs dynamisch zu ändern.

+0

Bedingte Stile zu finden ist speziell für solche Fälle. Sie müssen die Vorlagen nicht neu kompilieren, um neue geänderte Stile zu verwenden. –

Antwort

2

Der einfachste Weg, den ich finden kann, ist die Verwendung von Standard-Stil im Bericht und ändern Sie den Namen der Schriftart über Java, bevor Sie den Bericht ausfüllen.

Beispiel

Legen Sie einen Stil in jrxml, da auf diese Weise ich nicht, es zu textField zuweisen (I Standardstil verwenden) benötigen und es ist schneller von JasperReport Objekt erhalten

<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="reputation" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a88bd694-4f90-41fc-84d0-002b90b2d73e"> 
    ..... 
    <style name="myStyle" isDefault="true" fontName="DejaVu Sans"/> 
    .... 
</jasperReport> 

in Java geladen Bericht (jrxml), Name Schriftart Standard ändern und dann füllen Sie den Bericht

JasperReport report = JasperCompileManager.compileReport("jmyReport.jrxml"); 
report.getDefaultStyle().setFontName("NewFontName"); 
JasperPrint jasperPrint = JasperFillManager.fillReport(report, paramMap,datasource); 

Hower erinnern Sie müssen Sie alle Ihre Schriften in Font Extensions! hinzufügen, wenn Sie sicherstellen möchten, dass sie richtig in Ihrem PDF-Export auf dem Client-Rechner gerendert werden.

Sie können auch brauchen Sie nicht Standard-Stil, in diesem Fall verwenden, um es textField zuweisen und sie in der JRStyle[] styles = report.getStyles(); durch einen Vergleich auf JRStyle#getName()

+0

Vielen Dank für Ihre Eingaben. report.getDefaultStyle(). SetFontName ("NewFontName"); Was können alle Schriftartnamen hier zuweisen, können Sie einige Beispiele nennen. –

+0

@SrinathMahe Name einer Schriftart wie "SansSerif", "DejaVu Sans", "Arial" usw., aber pass auf, wenn du es richtig in PDF rendern willst brauchst du [font-extensions] (https://stackoverflow.com/ Fragen/3811908/font-ist-nicht-verfügbar-zu-der-jvm-mit-jasper-reports/35549391 # 35549391). Sie müssen sorgfältig studieren, was das bedeutet, bevor Sie beginnen, pdf mit Schriftarten zu erzeugen, die Benutzer möglicherweise nicht auf PC installiert haben. –

Verwandte Themen