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# et pdf creator


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 23
    Points
    23
    Par défaut c# et pdf creator
    Bonjour a tous
    Je voulai savoir si il est possible d'une application c# de faire appel a pdf creator sans que l'utilisateur ne voi le logiciel s'afficher.
    je m'explique dans le cadre d'un stage en entreprise je dois mettre en place un intranet, cet intranet doit pouvoir transformer les .doc .xls .ppt et images en pdf puis les mettre en ligne.
    Mais malheureusement je ne voi pas comment transformer tout cela dans mon code??

    Merci

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Regarde un peu les postes qui sont passé sur le forum on y parle d'itextsharp qui pourrait être utile.

    Ensuite si c'est une question de lancer un logiciel en background, je crois avoir vu dans process une propriété gérant cela.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    oui la classe Process permettrait de lancer PDF Creator "discretement" mais pour quel usage. C'est un logiciel typiquement fenêtré réclamant l'utilisation de la souris, l'interaction de l'utilisateur. Il ne prend pas ses ordres en provenance de quelque part pour faire quelque chose.

    comme l'a dit ced600 utilise des bibliothèques de création de PDF... comme iTextSharp par exemple. Maintenant si tu trouve la ligne de commande de PDF Creator pour qu'il fasse lui meme la conversion d'un XLS en PDF, d'un DOC en PDF.... ca n'en serait que mieux car prendre en charge dans ton appli tout cela risque d'être un peu difficile, mais surtout très long

    Dans ce cas la classe System.Diagnostics.Process est ton amie

  4. #4
    Membre habitué Avatar de Capitaine Kirk
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Mars 2005
    Messages : 98
    Points : 128
    Points
    128
    Par défaut
    Bonsoir

    gueguenkevin si tu parle de ce PDFCreator l'outil gratuit il y a des exemples de code en C# VB/VB.Net et d'autres dans le répertoire d'installation donc C:\programs files\ ... \Samples pour faire des pdf avec.
    Capitaine Kirk.

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 24
    Points : 15
    Points
    15
    Par défaut Effectivement
    Bonjour,

    Les samples dans le répertoire d'install requierent également une action de l'utilisateur.

    Avec iTextSharp, c'est plus de la création plutôt que de la conversion.

    Je pense qu'il doit y avoir un moyen quand même avec PdfCreator...



    Si quelqu'un a une idée....

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 24
    Points : 15
    Points
    15
    Par défaut Regedit
    Voila la solution :

    Modifiez les valeurs de la clé HKEY_LOCAL_MACHINE\Software\PDFCreator\Program


    AutosaveFilename=test.pdf
    AutosaveDirectory=c:\
    UseAutosave=1

    Et automatiquement il génèrera le fichier C:\test.pdf (par exemple) sans boîte de dialogue...

    A+

    Google est le meilleur ami de l'homme...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Jai bien reuisi a transcrire des txt en pdf avec cette methode mais les doc et autre ne donne rien ??

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Normal... PDFCreator ne sait pas interpréter les documents Office, il faut qu'Office "imprime" ces documents à destination de PDFCreator. Tu peux "piloter" Word ou Excel à partir de ton programme à l'aide de VSTO, il y a un tutoriel très complet sur ce site.

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 24
    Points : 15
    Points
    15
    Par défaut Moi j'y arrive
    Salut,


    Pour moi ça passe, et PDFCreator pilote Word automatiquement. Effectivement on voit la petite fenêtre de Word quelques secondes...
    J'ai testé avec des fichier .docx .

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par dysko Voir le message
    Salut,


    Pour moi ça passe, et PDFCreator pilote Word automatiquement. Effectivement on voit la petite fenêtre de Word quelques secondes...
    J'ai testé avec des fichier .docx .
    Ah ok, il doit passer par la commande DDE "imprimer" (comme quand on fait "clic droit / imprimer" sur un fichier)...

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    disko peut tu me donner le code qui permet de fairece ke tu as dit stp?

  12. #12
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    Voila le code que j'utilise dans un programme. C'est une appli console. Tu passe le chemin du fichier à convertir an arguments et ça génère un fichier C:\Fichier.pdf.

    Ce n'est qu'un bout du code. Ça arrive que PdfCreator plante et que le processus ne se libère pas correctement. A ce moment tu fais un petit test avant pour en être sur...

    Il y a surement des améliorations à donner... Si tu en vois fais moi signe !

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using Microsoft.Win32;
    using System.Threading;
    using System.Diagnostics;
     
     
    namespace DC_ConversionEnPdf
    {
        class ConversionPdf
        {
     
            private const int maxTime = 20;
            private PDFCreator.clsPDFCreator _PDFCreator;
            private PDFCreator.clsPDFCreatorError pErr;
            private bool ReadyState;
            string _repertoire = "C:\\";
            string _fichier = "fichier.pdf";
            private string cleRegistre_PdfCreator = @"SOFTWARE\PDFCreator\Program";
            private string fichier;
     
            public ConversionPdf(string _arg)
            {
                fichier = _arg;
                if(fichier.Length>0)
                    convertirEnPdf();              
            }       
     
            private void _PDFCreator_eReady()
            {
                _PDFCreator.cPrinterStop = true;
                ReadyState = true;
            }
     
            private void _PDFCreator_eError()
            {
                pErr = _PDFCreator.cError;
            }
     
            private void imprimerPDF(string unfichier)
            {
                string DefaultPrinter;
     
                Console.WriteLine("Conversion du document en cours...");
     
                //On change les paramètres de PDF Creator            
                RegistryKey rk = Registry.CurrentUser.OpenSubKey(cleRegistre_PdfCreator, true);
                rk.SetValue("AutosaveDirectory", _repertoire, RegistryValueKind.Unknown);
                rk.SetValue("AutosaveFilename", _fichier, RegistryValueKind.Unknown);
                rk.SetValue("UseAutosave", "1", RegistryValueKind.Unknown);
     
                #region On lance l'impression
     
                PDFCreator.clsPDFCreatorOptions opt;            
                _PDFCreator = new PDFCreator.clsPDFCreator();
                _PDFCreator.eError += new PDFCreator.__clsPDFCreator_eErrorEventHandler(_PDFCreator_eError);
                _PDFCreator.eReady += new PDFCreator.__clsPDFCreator_eReadyEventHandler(_PDFCreator_eReady);
                DefaultPrinter = _PDFCreator.cDefaultPrinter;
                _PDFCreator.cDefaultPrinter = "PDFCreator";
                _PDFCreator.cStart("/NoProcessingAtStartup", true);
                _PDFCreator.cPrinterStop = false;
                opt = _PDFCreator.cOptions;
                opt.UseAutosave = 1;
                opt.UseAutosaveDirectory = 1;
                opt.AutosaveFormat = 0;
                _PDFCreator.cOptions = opt;
                _PDFCreator.cClearCache();
                _PDFCreator.cVisible = true;
                _PDFCreator.cPrintFile(unfichier);
                _PDFCreator.cPrinterStop = false;
                ReadyState = false;
                _PDFCreator.cPrinterStop = true;
                _PDFCreator.cDefaultPrinter = DefaultPrinter;
                _PDFCreator.cClose();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(_PDFCreator);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(pErr);
                pErr = null;
                GC.Collect();
                GC.WaitForPendingFinalizers();
     
                #endregion
            }
     
            private void convertirEnPdf()
            {
                try
                {
                    if (File.Exists(fichier))
                        imprimerPDF(fichier);
                }
                catch(Exception ex)
                {
                    Console.WriteLine("Erreur : "+ex.Message);
                }
            }
        }  
    }

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    tout ce passe bien jusqua cet ligne

    rk.SetValue("AutosaveDirectory", _repertoire, RegistryValueKind.Unknown);

    erreur n'est pa defini a une instance d'objet
    pourtant 8repertoire est bien instancier juste au dessus

    public string cleRegistre_PdfCreator = @"SOFTWARE\PDFCreator\Program";

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Je pense que jai résolu un des probleme:
    PDF créator ne marche pas vraiment sur vista je vai dc dirrectement faire les tests sur le serveur.
    je vous tiendrai dc au courant sur l'avancé du projet

  15. #15
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    PdfCreator fontionne correctement avec Vista.

    Vérifie si dans ta base de registre la clé de PDFCreator est bien situé dans HKEY_LOCAL_MACHINE ou alors dans HKEY_CURRENT_USER.

    En fonction de ta config, Xp ou Vista, il ne la place pas au même endroit.

    En gros tu changes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RegistryKey rk = Registry.CurrentUser.OpenSubKey(cleRegistre_PdfCreator, true);
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RegistryKey rk = Registry.LocalMachine.OpenSubKey(cleRegistre_PdfCreator, true);

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Le probleme est de plus en plus complexe
    Je te remercie Dysko car maintenant j'arrive a transformer des fichier en pdf.
    Mon probleme c'est que la convertion en pdf doit se faire sur le serveur.
    jai donc installer mon site internet sur celui ci.
    Le code s'execute bien mais quand j'execute du coté client l'imprimante pdf coté serveur ne recoit auccune informations.
    Quelqun aurai t'il une idée

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Points : 23
    Points
    23
    Par défaut Petite avancée
    Voici un petit bout de code qui pourra peut être aider quelques personnes.
    Voici comment transformer un url directement en PDF via le code C#.
    J'utilise une dll payante mais qui a une version de démo illimitée le seul problème. est l'adresse du site qui s'affiche sur le pdf.
    Pour la lien de la dll voici http://www.html-to-pdf.net

    pour le code :

    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
    // fonction de transformation url en pdf
    	//je passe en parametre le chemin de l'url
       public string EnregistrerPage(string url)
        {
            try
            {
     
                string cheminfichier;  // chemin du fichier sur le disque
                string myurl = url.ToString().Trim();//recuperation de l'url
    			//......................................................................................................................................................................................................
                PdfConverter pdfConverter = new PdfConverter();//instanciation d'un converter
                pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;//format de la page
                pdfConverter.PdfDocumentOptions.PdfCompressionLevel = PdfCompressionLevel.Normal;//comression du pdf
    			//........................................................................différente option (marges ect ...)................................................................
                pdfConverter.PdfDocumentOptions.ShowHeader = true;
                pdfConverter.PdfDocumentOptions.ShowFooter = true;
                pdfConverter.PdfDocumentOptions.LeftMargin = 5;
                pdfConverter.PdfDocumentOptions.RightMargin = 5;
                pdfConverter.PdfDocumentOptions.TopMargin = 5;
                pdfConverter.PdfDocumentOptions.BottomMargin = 5;
                pdfConverter.PdfDocumentOptions.GenerateSelectablePdf = true;
                pdfConverter.PdfDocumentOptions.ShowHeader = false;
                pdfConverter.PdfFooterOptions.FooterText = "Sample footer: " + myurl +
                ". You can change color, font and other options";
                pdfConverter.PdfFooterOptions.FooterTextColor = Color.Blue;
                pdfConverter.PdfFooterOptions.DrawFooterLine = false;
                pdfConverter.PdfFooterOptions.PageNumberText = "Page";
                pdfConverter.PdfFooterOptions.ShowPageNumber = true;
    			//chemin d'acces au fihier a créer j'utilise DateTime.Now.ToFileTime pour que le fichier creer soit toujours unique
    			cheminfichier = "C:\\Inetpub\\wwwroot\\lesite1\\fichier\\Url" + DateTime.Now.ToFileTime() + ".pdf";
    			//nom du fichier ici par défault Url + name+ .pdf
                NomFichier = "Url" + DateTime.Now.ToFileTime() + ".pdf";
    			//convertion
                pdfConverter.SavePdfFromUrlToFile(myurl, cheminfichier);
    			//license
                pdfConverter.LicenseKey = "*************";
    			//je retourne le nom du fichier sur le disque
                return NomFichier;
     
            }
            catch (Exception ex)
            {
     
                return (ex.Message.ToString());
            }
     
     
        }

  18. #18
    Membre régulier Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    Salut ici.

    J'aimerai revenir sur ce sujet de la conversion utilisant PDFCreator. Je souligne pour éviter tout débordement de sujet sur une quelconque bibliothèque payante ou pas qui ne me satisfait pas (j'en ai essayé plein).

    La doc de PDFCreator, au sujet de l'interface COM dit ceci :
    Les noms sont "auto-documentés", donc aucune explication supplémentaire n'est nécessaire.
    Ce qui est complètement faut. Il n'y a aucune documentation qui s'affiche. L'intellisense reste cruellement muette, simplement parce que ces messieurs n'ont jamais utilisé le marquage ///.
    Bref, le premier code complet posté ici, fait état de clef de registre, mais on peut très bien passer les répertoires et noms de fichiers que l'on souhaite.
    Pour ma part, je ne sais absolument pas comment, vu qu'il n'y a AUCUNE doc.
    Si quelqu'un pouvait m'aider, Grand Merci !

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 111
    Points : 50
    Points
    50

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Bonjour,

    je voulais savoir quel était la dll à référencer pour piloter PDFCreator ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PDF Creator et Windows Vista
    Par jolemoine dans le forum Windows Vista
    Réponses: 6
    Dernier message: 25/06/2009, 13h40
  2. Contrôle Adobe PDF Creator
    Par Nessie37 dans le forum IHM
    Réponses: 4
    Dernier message: 11/10/2007, 09h56
  3. Tutorial generation pdf , avec pdf creator
    Par Nicko29 dans le forum VBA Access
    Réponses: 1
    Dernier message: 07/07/2007, 21h12
  4. problème avec pdf creator version 0.9
    Par poyoland dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 28/06/2006, 13h49
  5. Nom de fichier PDF Creator
    Par le_parrain dans le forum Composants VCL
    Réponses: 3
    Dernier message: 28/02/2005, 18h11

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