6
votes

JasperReport balance des images lors de l'exportation vers pdf, perdant ainsi la qualité

J'ai un rapport conçu avec IREPORT 1.3.0. Ce rapport comprend plusieurs images, qui sont chargées de manière dynamique. Ensuite, j'utilise jasperrunmanager.runreportopdfffile pour créer le fichier PDF. Tout dans le PDF a l'air bien à l'exception des images, qui apparaissent à l'échelle.

Quelqu'un peut-il me dire ce que je fais mal?

Merci.


1 commentaires

Je viens de télécharger et d'installer la version la plus récente (4.0.0). J'ai essayé un aperçu du rapport et les images apparaissent toujours à l'échelle. Il doit y avoir un paramètre de configuration, je manque, mais je ne peux pas comprendre lequel. S'il vous plaît aider!


3 Réponses :


9
votes

À propos des images

Si vous enregistrez le rapport en tant que HTML, vous remarquerez que le logo apparaît correctement. p>

Les fichiers image tels que PNG sont des images raster: stockées comme pixels individuels. P>

Alors que les fichiers PDF sont principalement vectorisés: les éléments à l'intérieur sont stockés comme des descriptions de la manière de les dessiner. Cela permet aux pdfs d'échelle et d'être lisibles à n'importe quelle taille. P>

L'utilisation d'une image raster dans un format vectoriel entraînera probablement un effet pixelé. P>

Solutions possibles H2>

Vous avez quelques options pour que les images correspondent à la qualité du texte, par ordre de facilité: p>

  • Créez une version du logo à 1200 dpi, échelonné à 400% plus grand. Li>
  • Créez une version SVG du logo. LI>
  • Convertissez l'image en format vectoriel. Li>
  • Échelle de l'échelle 300% et modifier la résolution sur 288 DPI. LI> ul>

    version 1200 dpi h3>

    L'image sera tranchante jusqu'à environ 400% de zoom. P>

    Version SVG h3>

    L'image aura l'air aigu chaque résolution. Remplacez la normale code> XML avec le code suivant (assurez-vous de régler la largeur et la hauteur en conséquence): p>

    <image hAlign="Center" vAlign="Middle">
     <reportElement x="0" y="0" width="179" height="66"/>
     <imageExpression class="net.sf.jasperreports.engine.JRRenderable"><![CDATA[net.sf.jasperreports.renderers.BatikRenderer.getInstance(new java.io.File("/path/to/logo.svg"))]]></imageExpression>
    </image>
    


2 commentaires

Il n'est pas nécessaire de définir la propriété Classe dans des versions plus récentes de JasperReports (au cas où vous vous demandez comment définir cela sur jrdesignexpression ).


La résolution est ce qui me corrigé. J'ai fait l'image énorme et cela a fonctionné.



2
votes

à la version 4.0.1 La résolution d'images raster doit être préservée et vous pouvez également améliorer la résolution des graphiques lors de l'utilisation d'autres options d'exportation (XLS, RTF, HTML, etc.). La valeur par défaut n'est qu'un très faible 72 dpi.

Dans Options d'IRPORT> Propriétés JasperReport Modifier

net.sf.jasperreporrs.image.dpi 300

http://jasperforge.org/projects/jasperreports/tracker/ Voir.php? id = 3411


0 commentaires

0
votes

Dans les versions plus récentes, vous devez configurer le net.sf.jasperreports.image.dpi code> global en définissant un jasperreports.properties code> fichier intérieur web-inf. / Classes / CODE> Dossier avec cette ligne:

net.sf.jasperreports.image.dpi=300


0 commentaires