2017-10-20 40 views
3

J'utilise Jasper jar pour générer un rapport sur mon projet J2EE. Je suis capable de générer les PDF avec succès sans aucun problème. Cependant, je veux que le nom de la police soit modifié dynamiquement pour tous mes PDF en fonction des paramètres que nous configurons sur un seul endroit. J'ai découvert le style conditionnel qui est utile pour accomplir ceci. Cependant, j'ai des centaines de polices qui ne peuvent pas être conditionnées sur chaque endroit. Cela rendra le rapport plus mauvais.Comment changer le nom de la police de façon dynamique?

Je suis à la recherche d'une solution adaptée qui m'aide à modifier dynamiquement les polices de caractères sur les PDF jasper.

+0

styles conditionnel est spécial pour de tels cas. Vous n'avez pas besoin de recompiler les modèles pour utiliser les nouveaux styles modifiés –

Répondre

2

Le moyen le plus simple que je peux trouver est d'utiliser le style par défaut dans le rapport et de changer son nom de police via java avant de remplir le rapport.

Exemple

définir un style (je vais utiliser le style par défaut) dans jrxml, puisque de cette façon que je ne dois pas l'assigner à textField et il est plus rapide d'obtenir de JasperReport objet

<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> 

en java chargé votre rapport (jrxml), le changement de style par défaut nom de la police puis remplir le rapport

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

Hower n'oubliez pas que vous devez ajouter toutes vos polices Font Extensions!, si vous voulez vous assurer que c'est bien fait lors de votre exportation vers pdf.

Vous pouvez également utiliser le style non par défaut, dans ce cas, vous devez assigner à textField et trouver dans le JRStyle[] styles = report.getStyles(); en comparant le JRStyle#getName()

+0

Merci pour vos contributions. report.getDefaultStyle(). SetFontName ("NewFontName"); Quels sont tous les noms de police que je peux assigner ici, pouvez-vous donner quelques exemples. –

+0

@SrinathMahe Nom d'une police comme "SansSerif", "DejaVu Sans", "Arial" etc, mais attention si vous aimez le rendre correctement en pdf, vous avez besoin de [font-extensions] (https://stackoverflow.com/ questions/3811908/font-is-not-available-to-the-jvm-with-jasper-reports/35549391 # 35549391). Vous devez étudier attentivement ce que cela signifie avant de commencer à générer des fichiers PDF avec des polices que l'utilisateur peut ne pas avoir installé sur PC. –