2013-05-30 22 views
2

J'ai un rapport qui a 2 sous-rapports dans la bande de détail. Je voudrais ajouter un paramètre de pagination dans le pied de colonne, mais quand je prévisualise mon rapport, il me donne une page blanche à la fin. J'ai placé ce qui suit pour mon bloc Sub Report dans la fenêtre de leur propriété.Java: problème de page vide sur le rapport jasper

Print Repeated Values vérifié

Remove Line When Blank vérifié

Répondre

2

La réponse est à ce lien http://mattjiang.blogspot.com/2007/05/easy-way-to-remove-blank-page-generated.html

private void removeBlankPage(List<JRPrintPage> pages) { 
    for (Iterator<JRPrintPage> i = pages.iterator(); i.hasNext();) { 
    JRPrintPage page = i.next(); 
    if (page.getElements().size() == 0) { 
     i.remove(); 
    } 
    } 
} 
+4

Vous devez ajouter les informations utiles de votre lien vers votre réponse en tant modifier. Nous n'aimons pas seulement les réponses de lien ici. –

1

Avec l'utilisation de ce lien http://mattjiang.blogspot.com/2007/05/easy-way-to-remove-blank-page-generated.html, je pouvais naviguer dans le jaspe généré et j'ai trouvé « trash éléments "dans mon rapport:

int actualPage = 1; 
for (Iterator<JRPrintPage> i=jasperPrint.getPages().iterator(); i.hasNext();) { 
    JRPrintPage page = i.next(); 
    System.out.println(String.format("Page: %s, size: %s", actualPage, page.getElements().size())); 
    for (Object element : page.getElements()) { 
     System.out.println("Element: " + element); 
     if (element instanceof JRTemplatePrintRectangle) { 
      JRTemplatePrintRectangle rectangle = (JRTemplatePrintRectangle) element; 
      System.out.println(String.format("Rectangle: Key: %s", rectangle.getKey())); 
     } 
    } 
    actualPage++; 
} 
0

Un moyen facile de supprimer la page blanche générée par JasperReports.

Si votre rapport JasperReports contient un autre sous-rapport et qu'il a été généré en tant que fichier PDF. Dans certaines circonstances, une page vierge pourrait être trouvée dans le fichier PDF. Voici ma solution pour l'enlever facilement.

private void removeBlankPage(List<JRPrintPage> pages) { 

     for (Iterator<JRPrintPage> i=pages.iterator(); i.hasNext();) { 
      JRPrintPage page = i.next(); 
      if (page.getElements().size() == 0) 
       i.remove(); 
     } 
    } 

Cette méthode doit être appelée avant de vider votre instance de JasperPrint au format PDF.

Après l'exemple de code, il serait préférable de connaître la hiérarchie des objets de JasperPrint.

  1. Un JasperPrint a un ou plusieurs JRPrintPage, vous pouvez l'obtenir via la méthode getPages() de JasperPrint. Il renvoie une liste de JRPrintPage. Si vous avez trois éléments, votre imprimante imprimera 3 pages.
  2. Un JRPrintPage a un ou plusieurs JRPrintElement, chaque élément peut être une chaîne de texte, ou une image, ou un rectangle, etc. Vous pouvez changer sa position ou son contenu dynamiquement, ou même ajouter un nouveau JRPrintElement en JRPrintPage.

CREDITS: http://mattjiang.blogspot.in/2007/05/easy-way-to-remove-blank-page-generated.html

Questions connexes