2017-09-25 5 views
0

Je tableau simple produit avec PrawnPDF qui ressemble à celui ci-dessousComment créer une table avec un en-tête à deux rangs - PrawnPDF

|h1|h2|h3|h4| 
------------- 
|d1|d2|d3|d4| 
|d1|d2|d3|d4| 
|d1|d2|d3|d4| 

généré par le code ci-dessous

tb = [["h1", "h2", "h3", "h4"], 
     ["d1", "d2", "d3", "d4"], 
     ["d1", "d2", "d3", "d4"], 
     ["d1", "d2", "d3", "d4"]] 

table(tb)do 
    row(0).font_style = :bold 
end 

Maintenant, la a besoin d'en-tête à effectuer par deux lignes comme ci-dessous

|text  | 
|h1|h2|h3|h4| 
------------- 
|d1|d2|d3|d4| 
|d1|d2|d3|d4| 
|d1|d2|d3|d4| 

J'ai essayé de faire un sous-table et de l'utiliser comme l'en-tête mais ça ne couvre pas toute la table. Il ressemble à

|text  | 
|h1|h2|h3|h4| 
---------------------- 
|d1   |d2|d3|d4| 
|d1   |d2|d3|d4| 
|d1   |d2|d3|d4| 

et aucune ligne n'est en gras.

Voici le code jusqu'à présent

text = make_cell(content: 'text', colspan: 4) 
header_array = [[text], ["h1", "h2", "h3", "h4"]] 
header = make_table(header_array) 

tb = [[header], 
     ["d1", "d2", "d3", "d4"], 
     ["d1", "d2", "d3", "d4"], 
     ["d1", "d2", "d3", "d4"]] 

table(tb)do 
    row(0).font_style = :bold 
end 

Toute idée comment puis-je couvrir l'en-tête?

PS J'utilise la version 1.3.0 et gambas gambas table 0.2.2

Merci

MISE À JOUR - Sur la base de réponse Florent, si vous voulez/besoin de passer un bloc à la table.

header_text = [[{content: "Text", colspan: 4}]] 
tb = [["h1", "h2", "h3", "h4"], 
    ["d1", "d2", "d3", "d4"], 
    ["d1", "d2", "d3", "d4"], 
    ["d1", "d2", "d3", "d4"]] 

table(header_text + tb)do 
    row(0).font_style = :bold 
    self.header = 2 
end 

Répondre

1

Vous essayez d'utiliser le paramètre d'en-tête?

header_text = [[{content: "Text", colspan: 4}]] 
tb = [["h1", "h2", "h3", "h4"], 
    ["d1", "d2", "d3", "d4"], 
    ["d1", "d2", "d3", "d4"], 
    ["d1", "d2", "d3", "d4"]] 

table(header_text + tb, header: 2)do 
    row(0).font_style = :bold 
end 
+0

Merci pour la réponse. Je ne sais pas d'où provient 'header = 2', mais même si la table semble correcte, l'en-tête (2 lignes) n'est pas répété sur chaque page. En utilisant 1.3 – macsig

+0

il s'est avéré que vous deviez ajouter 'self' pour le faire fonctionner' self.header = 2'. – macsig

+0

mis à jour ma réponse avec la syntaxe correcte (juste testé) –