Bonjour à tous,
je souhaite imprimer sur un PDF une table, mais je ne sais pas comment faire(sinon je serais pas venu)
Quel est la commande à taper ?
Merci pour votre aide.
AUZUR
Bonjour à tous,
je souhaite imprimer sur un PDF une table, mais je ne sais pas comment faire(sinon je serais pas venu)
Quel est la commande à taper ?
Merci pour votre aide.
AUZUR
Bonjour,
Tu peux passer par un état.
Tu créé ton état avec ta table (avec des données statiques ou dynamiques)
et ensuite tu lance l'impression de l'état.
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 iAperçu(iPDF,"C:\pdftest.pdf") iImprimeEtat(nomEtat, param1, param2, ..., param_n)
Merci pour ta réponse, mais non, je ne peux pas passer par un état, car il ce trouve qu'il n'y a pas que ma table que j'imprime.
En faites j'ai un bouton qui execute ça :
Et donc il me manque l'impression de ma table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 dSauveImageBMP(IMG_SLOVAQUIE, "C:\GEO\slovaquie.bmp") dSauveImageBMP(IMG_Nom,"C:\GEO\Nom.bmp") dSauveImageBMP(entete,"C:\GEO\entete.bmp") dSauveImageBMP(pied, "C:\GEO\pied.bmp") dSauveImageBMP(Titre,"C:\GEO\titre.bmp") iConfigure("PDFCreator") iImprimeImage("C:\GEO\slovaquie.bmp", 20,100,180,210) iImprimeImage("C:\GEO\Nom.bmp", 20,60,100,80) iImprimeImage("C:\GEO\entete.bmp",0,0,210,20) iImprimeImage("C:\GEO\pied.bmp",0,280,210,300) iImprime(iPosY(20)+iPosX(50)+C1..Libellé+SansEspace(C1..ValeurAffichée)+C2..Libellé+SansEspace(C2..ValeurAffichée)+SAI_Saisie2..Libellé+SAI_Saisie2) iImprime(iPosY(250)+iPosX(80)+CA) iImprime(iPosY(290)+iPosX(140)+Date) iImprime(iPosY(250)+iPosX(50)+Total) iImprimeImage("C:\GEO\titre.bmp",90,27,115,37) iFinImprime fSupprime("C:\GEO\slovaquie.bmp") fSupprime("C:\GEO\titre.bmp") fSupprime("C:\GEO\Nom.bmp") fSupprime("C:\GEO\entete.bmp") fSupprime("C:\GEO\pied.bmp")
Bonjour
et bien il faut continuer ce que tu as commencé, c'est à dire programmer entièrement ton impression.
Faire une boucle des lignes de ta table puis iCadre,imprimeZone, ... etc
et gestion du saut de page si dépassement de la hauteur de page bien sur
Pascal H.
phapps.e-monsite.com
Je pense qu'il faut que je fasse un truc du genre:
Mais je suis un peu perdu !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 POUR TOUTE LIGNE DE Tab_Couleur iCadre(0,0,40,20) iImprimeZone() FIN
Le principe est simple, il faut gérer un pointeur vertical et un pointeur horizontal pendant le parcours de la table
Voici un exemple simplifié :
Dans cet exemple je n'ai pas imprimé le titre des colonnes mais le principe est le même.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 nPosX est un entier nPosY est un entier nHauteurLigne est un entier = 5 nLargeurColonne est un entier = 50 iAperçu(i100) nPosY = 0 POUR TOUTE LIGNE DE Table_Test nPosX = 0 // Remise à zéro du pointeur horizontal // Impression d'une cellule de la table iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) iImprimeZone(col_Colonne1, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) nPosX += nLargeurColonne // une autre ... iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) iImprimeZone(col_Colonne2, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) nPosX += nLargeurColonne iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) iImprimeZone(col_Colonne3, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) nPosX += nLargeurColonne // etc ... nPosY += nHauteurLigne // Positionnement du pointeur vertical pour la ligne suivante FIN iFinImprime()
De plus j'ai nommé les colonnes et j'ai donné une largeur fixe (50) à toutes les colonnes, ce qui n'est pas top.
Il faut fait quelque chose du genre :
- Récupérer la liste des colonnes par TableEnumèreColonne et ensuite utiliser les indirections pour accéder à tes colonnes
- Pour la largeur : appliquer le ratio entre la largeur de la colonne et la largeur de la table à la largeur d'impression que tu veux réserver à la table
- tu pourrais aussi gérer l'alignement en fonction du type de la colonne
- modifier la couleur de fond pour les lignes paires et impaires
- etc ...
Tu peux facilement faire une fonction générique qui te permettrait d'imprimer n'importe quelle table
Pascal H.
phapps.e-monsite.com
J'ai donc essayé ta méthode, mais je me retrouve avec quelque chose de bizarre(voir image)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 nPosX est un entier nPosY est un entier nHauteurLigne est un entier = 5 nLargeurColonne est un entier = 30 iAperçu(i100) nPosY = 40 POUR TOUTE LIGNE DE Tab_Couleur nPosX = 20 // Remise à zéro du pointeur horizontal iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) iImprimeZone(Tab_Couleur.COL_CA, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) nPosX += nLargeurColonne // une autre ... iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) iImprimeZone(Tab_Couleur.Couleur, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) nPosX += nLargeurColonne // etc ... // nPosY += nHauteurLigne // Positionnement du pointeur vertical pour la ligne suivante FIN
Parce que tu as mis en commentaire le passage à la ligne suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part nPosY += nHauteurLigne
Pascal H.
phapps.e-monsite.com
Ah oui pardon j'avais pas vu...
Donc mon tableau s'imprime bien, mais les couleurs ne sont pas dedans
ça veut dire quoi ça ?les couleurs ne sont pas dedans
Une de tes colonnes contient un code couleur que tu veux voir apparaître ?
Si c'est le cas il faut modifier le iCadre pour affecter la couleur de fond souhaitée
Pascal H.
phapps.e-monsite.com
Désolé pour le retard !
Donc, ce qu'il ce passe, c'est que ma table s'insère bien sur mon PDF, avec dans ma première colonne les CA souhaités, mais dans ma seconde colonne, je voudrais avoir mes couleurs(pas le code couleur, mes couleur propement dit).
Si je code:
je me retrouve avec mon code couleur, mes pas avec ma couleur(normal), donc je me suis dit que si je m'étais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 POUR TOUTE LIGNE DE Tab_Couleur nPosX = 20 // Remise à zéro du pointeur horizontal iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) iImprimeZone(Tab_Couleur.COL_CA, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) nPosX += nLargeurColonne // une autre ... iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) iImprimeZone(Tab_Couleur.Couleur2, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) nPosX += nLargeurColonne nPosY += nHauteurLigne // Positionnement du pointeur vertical pour la ligne suivante FIN
Je pourrais avoir ma couleur, mais non ! Ce serrais trop simple !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 POUR TOUTE LIGNE DE Tab_Couleur nPosX = 20 // Remise à zéro du pointeur horizontal iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) iImprimeZone(Tab_Couleur.COL_CA, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) nPosX += nLargeurColonne // une autre ... iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) iImprimeZone(Tab_Couleur[Tab_Couleur].Couleur..CouleurFond = Tab_Couleur[Tab_Couleur].Couleur2, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne) nPosX += nLargeurColonne nPosY += nHauteurLigne // Positionnement du pointeur vertical pour la ligne suivante FIN
Que faire ?
Bonjour
Relis mon message précédent et regarde l'aide de la fonctions iCadre
C'est iCadre qui va te permettre d'afficher le fond en couleur
Le iImprimeZone devient inutile dans ce cas
Pascal H.
phapps.e-monsite.com
Ah oui, Ok merci pour tous.
Ca fonctionne, mais j'ai quand même un petit soucis, car la couleur des traits change aussi.
N'y a t-il pas un moyen pour que les traits reste noir ???
Pascal H.
phapps.e-monsite.com
Merci ça marche.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager