2010-05-06 8 views
1

J'essaie d'afficher une table pour afficher des produits (lignes) dans une seule page de mise en page fixe A4. Je parviens à ajouter une table avec les sections header/detail/footer mais je ne peux pas définir une hauteur minimum pour la section detail (150mm par exemple). Si je définis une hauteur de 150 mm sur la ligne de détail, alors chaque rangée aura cette hauteur de 150 mm. Considérant que je voudrais, chaque rangée ait une hauteur minimale (pourrait être sur plusieurs lignes si le contenu de certaines colonnes est enveloppé).Rapport BIRT PDF: hauteur de table fixe?

 +---------+--------+--------------+ 
Tbl Hdr | col1 | col2 | col3  | 
     +---------+--------+--------------+ 
Tbl Dtl | [val1] | [val2] | [val3]  | 
     +---------+--------+--------------+ 
     |         | <-should have a variable heigth 
     +---------+--------+--------------+ 
Tbl Ftr |   |  |  Total | 
     +---------+--------+--------------+ 

Si un ensemble pas la hauteur sur la ligne de détail, puis le pied de page vient, juste sous les lignes de détail, au lieu de coller au bas de la page. J'espère que cela a du sens (sinon je pourrais fournir plus de détails). Toute aide serait grandement appréciée.

Répondre

1

Un rapport BIRT utilise un moteur de mise en forme automatique pour optimiser le contenu du contexte actuel. Ceci est conçu pour rendre le rapport aussi beau que possible quel que soit l'affichage/l'écran. En fait, il est destiné à minimiser sinon éliminer l'espace même que vous essayez de préserver.

Une chose que vous pourriez envisager est d'ajouter une deuxième rangée de détails. Vous pouvez ensuite donner à cette ligne de détail une hauteur fixe et lui faire consommer les espaces restants. Vous pouvez également placer une deuxième table dans le pied de la page maître qui rendra les données souhaitées et les lier au bas de la page. Ceci a l'avantage d'adhérer au bas de la page quel que soit le type de page (lettre, A4, etc ...).

+0

Merci pour votre réponse . Je suis allé avec la première solution que vous avez offerte. Je devais aussi rendre la ligne de la hauteur fixe visible seulement après rownum supérieur à 3 (valeur arbitraire ...) pour éviter les sauts de page non désirés. Pas très belle solution mais je ne peux pas passer plus de temps sur ça ... Merci encore pour votre aide. – kiwifrog

1

Une alternative, en ayant un pied de page ne coupe pas:

J'ai un client qui voulait une taille de table fixe, avec une hauteur de ligne fixe. Il a fini par afficher 10 lignes.

Pour contourner le formatter automatique:

Créer une variable var rowCount = 0; reportContext.setGlobalVariable("rowCount",rowCount); dans le script Initialize. Dans votre script de récupération, ajoutez rowCount++; juste avant return(true);. Ensuite, modifiez l'instruction if(!lineDataSet.fetch()) à ce qui suit:

if(!lineDataSet.fetch()){ 
    if(rowCount % 10 >0){ 
     row["column1"] = ""; 
     rowCount++; 
     return(true); 
    } 
    return(false); 
} 

Cela peut être pratique dans un grand nombre de scénarios lorsque vous avez besoin pour créer des données fausses aux tables de Matelasser (par exemple les dates manquantes)

Questions connexes