IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[c#2.0]plusieures pages dans un pdf.


Sujet :

C#

  1. #1
    Expert éminent
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Points : 6 775
    Points
    6 775
    Billets dans le blog
    4
    Par défaut [c#2.0]plusieures pages dans un pdf.
    Bonjour à tous.
    Je suis en train de me dépatouiller tant bien que mal sur une petite appli qui doit me permettre de générer des pdf, mais je bloque sur un petit élément. J'aurais besoin que les pages de mon pdf s'incrémentent au fur et à mesure, mais, malheureusement pour moi, elles s'écrasent alors que je suis toujours sur le même flux. Est-il possible de créer une nouvelle page pdf lorsque l'on passe à une deuxième partie?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    FileStream fr = new FileStream("monDossier." + extension, FileMode.Create);
    fr.Write(page, 0, bytes.Length);
    //page2 écrase page.
    fr.Write(page2, 0, bytes2.Length);
    fr.Close();
    y a-t-il une commande que je dois rajouter entre les 2 pour me permettre de passer à une nouvelle page? ou est-ce impossible?

    Cordialement,
    Lyche
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 288
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par Lyche Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    FileStream fr = new FileStream("monDossier." + extension, FileMode.Create);
    fr.Write(page, 0, bytes.Length);
    //page2 écrase page.
    fr.Write(page2, 0, bytes2.Length);
    fr.Close();
    Tu réécris dans ton fichier en repartant à 0, c'est normal que ta page 1 soit écrasée

    essaye plutot un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fr.Write(page2, bytes.Length+1, bytes2.Length);

  3. #3
    Expert éminent
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Points : 6 775
    Points
    6 775
    Billets dans le blog
    4
    Par défaut
    j'avais testé un truc comme ça, il me retourne une erreur marquée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Offset et length étaient hors limites pour ce tableau ou bien le nombre est supérieur au nombre d'éléments de l'index à la fin de la collection source.
    je pense aussi que le problème vient de là, mais je vois pas comment résoudre cette erreur
    Merci pour ton aide

    Cordialement,
    Lyche
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

  4. #4
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    244
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 244
    Points : 110
    Points
    110
    Par défaut
    Tu es sur Drop? Moi je dirais que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FileStream fr = new FileStream("monDossier." + extension, FileMode.Create);
    // bytes équivaut à "toto"
    fr.Write(page, 0, bytes.Length);
    //page2 écrase page.
    fr.Write(page2, 0, bytes2.Length);
    // bytes équivaut à "titi"
    fr.Close();
    // donne "tototiti"
    Et avec ta proposition on aurait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // donne "toto    titi", les 4 espace étant la taille du buffer 1
    Moi je pense que le pb est ailleurs, par contre je ne saurais pas te dire ou

  5. #5
    Expert éminent
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Points : 6 775
    Points
    6 775
    Billets dans le blog
    4
    Par défaut
    au pire si vous connaissez une solution pour faire de 2 pdf 1 seul sur le même nombre de page, je suis preneur ^^

    Cordialement,
    Lyche
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

  6. #6
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    244
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 244
    Points : 110
    Points
    110
    Par défaut
    Je ne vois pas dans ton code l'endroit ou tu convertit en pdf?

    Utilise tu une bibliothèque? Sinon, il en existe une ITextSharp et un tuto de son utilisation ici.

    Edit1: Ton exemple est faux non? Tu écrit fs.Write(page,0,bytes.Length). Il faudrtait plutot mettre fs.Write(bytes,0,butes.Length)!!

  7. #7
    Expert éminent
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Points : 6 775
    Points
    6 775
    Billets dans le blog
    4
    Par défaut
    exacte, j'ai changé mon code en le copiant sur le forum (clause de confidentialité due à mon taf), et j'ai oublié d'en changer une partie :p
    mais oui, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fs.Write(page, 0, page.Lenght)
    pour mon code, le voici en entier

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    rs.ServerReport.ReportPath = "monRapport";
    rs1.ServerReport.ReportPath = "monRapport2";
     
    string reportType = "PDF";
    string mimeType;
    string encoding;
    string extension;
    Warning[] warnings;
     
    string deviceInfo =
    	"<DeviceInfo>" +
    	" <OutputFormat>PDF</OutputFormat>" +
    	"  <PageWidth> 29.7cm</PageWidth>" +
    	"  <PageHeight>21cm</PageHeight>" +
    	"  <MarginTop>1cm</MarginTop>" +
    	"  <MarginRight>1cm</MarginRight>" +
    	"  <MarginLeft>1cm</MarginLeft>" +
    	"  <MarginBottom>1cm</MarginBottom>" +
    	"</DeviceInfo>";
     
    string[] streams;
    byte[] page = rs.ServerReport.Render(
    	reportType,
    	deviceInfo,
    	out mimeType,
    	out encoding,
    	out extension,
    	out streams,
    	out warnings
    );
     
    byte[] page2 = rs1.ServerReport.Render(
    	reportType,
    	deviceInfo,
    	out mimeType,
    	out encoding,
    	out extension,
    	out streams,
    	out warnings
    );
     
    FileStream fr = new FileStream("monDossier." + extension, FileMode.Create);
    	fr.Write(page, 0, page.Length);
     
    	fr.Write(page2, 0, page2.Length);
     
    	fr.Close();
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

  8. #8
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    244
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 244
    Points : 110
    Points
    110
    Par défaut
    Ok, je vois ce que tu veux faire. D'après ton code tu utilise reporting services qui te génère les pdf.
    Pourquoi ne fait tu pas dans ce cas un rapport qui englobe les deux autres, comme ca pas de soucis.

    Car RS en tegénérant les rapports définit les en-tete et pieds de fichier ce qui te posera probleme pour merger les deux pdf.

    Honnetement faire un rapport qui englobe les deux autre ne doit pas être compliqué avec du copier/coller

    En tout cas, moi c'est ce que j'aurais fait.

    Sinon, si tu veux quand même garder deux rapport et merger les pdf, tu peut utiliser PDFCreator qui d'apres la doc sur Wikipedia permet de merger plusieur PDF via une imprimante virtuelle. Il te suffiraot donc de lancer l'impression de tes deux pdf sur cette impriamnte virtuelle via un peu de .net

    Je pense que la tu as toutes les pistes qu'il te faut.

    Bon courage.

  9. #9
    Expert éminent
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Points : 6 775
    Points
    6 775
    Billets dans le blog
    4
    Par défaut
    j'ai pensé à cette solution aussi, mais, je t'explique le contexte qui fait que je ne peux pas.

    J'ai 22 graphiques, répartis en 2 groupes. le premier se compose de 4 graphiques et le second de 18.
    Je dois répartir le second groupe de façon à en faire 9 groupes (les graphiques qui composent les groupes sont définis en base de donnée)
    c'est là le hic.. c'est qu'il faut que je trouve une routine qui me permet, soit de lier plusieurs pdf à un rapport viewer ou celui de grouper les pdf. Sachant que chaque graphique ne fait qu'une page a 4.
    Hier j'ai récupéré une bibliothèque qui permet de regrouper les pdf. Je vais voir si j'arrive à en tirer quelque chose de bien.

    Merci pour vos réponses.
    Cordialement,
    Lyche
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

Discussions similaires

  1. [XL-2007] Conversion PDF de plusieurs pages dans une feuille
    Par Poumchimie dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/01/2013, 17h16
  2. [Smarty] Plusieurs pages dans le meme template
    Par nabab dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 21/08/2008, 16h29
  3. [iTEXT] plusieurs tables dans un pdf
    Par maniolo dans le forum Documents
    Réponses: 1
    Dernier message: 12/09/2006, 10h10
  4. [CR8.5]Texte de plusieurs page généré en pdf
    Par Nout dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 26/07/2005, 08h26
  5. nombre de page dans un PDF ???
    Par rodolphedj dans le forum ASP
    Réponses: 15
    Dernier message: 08/09/2004, 13h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo