none
problème avec pilote pdf RRS feed

  • Discussion générale

  • Bonjour j'utilise un pilote pdf pour imprimer des documents de mon site web en format pdf

    j'utilise le namespace PrintDocument comme suit:

                PrintDocument pd = new PrintDocument();
                pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);  //routine d'impression
                pd.DocumentName = "testpage";
                pd.PrinterSettings.PrinterName = "PDFCreator";
                pd.Print();

    pd_PrintPage étant ma routine de préparation du document (le contenu)

    j'ai essayé deux versions PDFCreator et PDF995

                pd.PrinterSettings.PrinterName = "PDF995";

    ca fait le même problème avec les deux versions

    mon gros problème est que tout cela fonctionne bien sur un serveur windows 2008 32bit, mais pas sur une version 64bit, c'est la mon seul problème

    dans mon environnement 64bit mes deux pilotes fonctionne bien si j'imprime une page test de windows ou si j'utilise mon code dans une application windows plutôt qu'un site web asp.net

    je crois que le problème viens du fait que aucun des deux pilotes ne fonctionne bien dans un site web asp.net sous un environnement 64bit

    quelqu'un aurais une idées?

    samedi 9 octobre 2010 13:30

Toutes les réponses

  • Bonjour,

    De préférence toujours indiquer le message d'erreur exact plutôt que "ne marche pas".

    Généralement le problème est qu'une application ASP.NET fonctionne sous un compte particulier et que les imprimantes installées sont spécifiques à un compte. Il faut donc les rendre disponible sous ce compte là par exemple en les ajoutant au compte par défaut. Qq chose comme : http://support.microsoft.com/kb/307016

    Ce que je ne comprends pas bien c'est :
    - en 64 bit, cela marche pour une application Windows : ok le compte utilisé dispose des imprimantes voulues
    - en 64 bits, cela marche pas pour un site web : ok, le compte ne dispose pas des imprimantes voulues
    - par contre "fonctionne sur un serveur 32 bits" c'est y compris avec une appli web ? Sous quel compte fonctionne l'appli ? (si c'est sur le poste de développement avec le serveur web de dév c'est normal car là on tourne sous le compte du développeur)

    Je commencerais par sortir http://msdn.microsoft.com/fr-fr/library/system.drawing.printing.printersettings.installedprinters.aspx pour voir si les imprimantes sont vues ou pas depuis l'application web...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    samedi 9 octobre 2010 15:55
    Modérateur
  • merci de ta réponse, tu sembles brillant :)

    habituellement j'inclus toujours le message d'erreur, mais dans ce cas il n'en a pas, la routine s'exécute sans erreur dans mon code, mais rien n'est envoyer dans le pilote, enfin aucun fichier pdf ne se créer ou il se devrait

    et oui tu doit me croire, auparavant mes fichiers pdf se créaient comme il faut, la seul chose que j'ai fait est de changer mon serveur en windows 2008 64bit, plutôt que 32bit, d'ailleurs depuis ce temps, mon ancien serveur est encore brancher seulement pour me permettre de produite mes pdf correctement, j'aimerais bien m'en débarasser.  Oui c'est y compris avec appli web.

    il est clair que jongle entre deux symptôme:

    es-ce que les deux pilotes ne fonctionne pas bien dans un environnement 64bit, comme bien d'autre pilote (j'avoue que c'est de moins en moins pire), mais parcontre les pilotes pdf ne sont pas d'usage courant, surtout en programmation, enfin pas autant qu'exemple une carte vidéo ou de son utilisé par monsieur tout le monde

    ou

    es-ce que cela à rapport avec la sécurité windows ou une restriction de compte, se qui ne me surprendrant pas non plus

    parcontre comme toi je ne fais pas le lien entre un os 32 ou 64 bit, c'est pour cela que je soupçonne d'avantage une défectuosité des deux pilotes

    de plus j'ai bien l'utilisateur 'Everyone' avec les 3 crochets (Print, Manage printer, Manage document) sous l'onglet sécurité du pilote pdf

    qu'es-ce que tu en penses?

    je vais attendre voir si quelqu'un à d'autre solutions, car les liens que tu m'as fournis ne me convaint pas suffisement, enfin si personne ne répond ou que je ne trouve pas, je vais essayer les longues procédures fournis dans le premier liens, si seulement j'étais sur que cela reglerais mon problème :(

    je vais parcontre faire le test de découverte des imprimantes, cela pourrais sans doute me donner un indice, je te reviens sur se sujet

    merci et au plaisir :)

    samedi 9 octobre 2010 16:30
  • Oui donc commencer pas lister les imprimantes pour voir ce que cela donne.

    http://support.microsoft.com/kb/324565/en-us laisse même penser qu'il faut carrément créer un service et utiliser l'API win32.

    Le cas que j'avais rencontré était sous ASP "classique", le problème étant que le profil n'était pas chargé car ASP tourne en tant que service. Ajouter les imprimantes au profil par défaut avait résolu le problème. Je n'ai pas encore eu ce cas en .NET (je génère des doc PDF directement à partir de données avec Reporting Services).

    Bonne continuation.

     

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    samedi 9 octobre 2010 18:32
    Modérateur
  • bon voila ma page asp.net voit bien les imprimantes installé

    en lisant l'article je me demande comment cela fonctionne bien sur mon serveur en 32bit :|, pourtant même dans mon env 64bit dans une page asp.net je voit bien les imprimantes installés, si le framework les voient, ils peut surement imprimer dessus

    je croirais plutôt plus à un problème de compte par défaut que tu as parlé plutôt ou les pilotes :|

    es-ce que tu crois que la solution que tu utilises (reporting service) règlerais ce problème? ou c'est plus compliquer?

    médé

    samedi 9 octobre 2010 20:36
  • Reporting Services est un outil de génération d'états qui fait partie de SQL Server (y compris l'édition Express qui est gratuite). Voir du coté de http://technet.microsoft.com/fr-fr/library/ms365166.aspx. Il est destiné à générer des rapports dans différents formats depuis des sources de données diverses.

    Cela ne conviendra pas par contre si le but est d'imprimer des fichiers déjà existants (Word, Excel ou autre) pour les convertir en PDF.

    Pour ce qui est du problème lui-même , je me demande si ce n'est pas mon dernier lien (en gros .NET ne supporte pas l'impression depuis ASP.NET). Tant que j'y pense cela parait même assez logique car comme l'impression se fait en passant pas des évènements, il n'y aura pas de souci dans une appli Windows (l'appli étant toujours active pendant l'impression) tandis qu'une page ASP.NET se lance, s'exécute et se termine sans attendre rendant impossible la gestion des évènements d'impression...

     

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    samedi 9 octobre 2010 20:56
    Modérateur
  • ok mais es-ce que tu penses que se serais plus simple avec reporting service, es-ce que c'est préférable de l'utiliser, y aurais-t-il d'autre avantage? tant qu'a travailler sur la bonne chose en partant :)

    se que j'imprime est créer par code et ne viens pas d'un fichier, j'utilise StringBuilder pour composer le contenu et l'envoyer directement au pilote, c'est virtuel, j'utilise aussi l'objet graphic de ma fonction pd_PrintPage:

    private void pd_PrintPage(object sender, PrintPageEventArgs ev)

    si .net ne supporte pas l'impression depuis asp.net, pourquoi ca fonctionne sur mon serveur 32bit? je la comprend pas celle-là

    je comprend que la réponse à des évènements devient impossible, ex:  savoir si la page à bien été imprimer, ou si le pilote n'est pas prêt, etc...

     

    samedi 9 octobre 2010 21:32
  • Bon reprenons au début.

    Si je comprends bien on veut juste générer des fichiers PDF très simples. Dans ce cas j'utiliserai une librairie comme http://sourceforge.net/projects/itextsharp/ pour générer directement le fichier plutôt que de passer par une impression vers une imprimante PDF.

    Ce qui me parait bizarre est l'absence totale d'erreurs. Le fonctionnement est ok par contre sur un "vrai" serveur web 32 bits (ce n'est pas sur une station de développement ?). Si oui, le plus probable est peut-être effectivement un pb de config du serveur 64 bits (les pilotes ne sont pas 64 bits ?). Une possible solution serait alors de faire tourner IIS en mode 32 bits pour voir ce que cela donne etc.. mais cela sera sans doute un peu complexe. Donc définitiviement voir si http://sourceforge.net/projects/itextsharp/ ne permettrait pas de répondre au besoin.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    dimanche 10 octobre 2010 10:08
    Modérateur
  • re Patrice et merci de tes réponses rapides, de ton aide et ta patience :)

    finalement j'ai copier mon code dans une application windows form stantard, donc lorsque je vais créer mes enregistrement dans ma base sur mon site, je démarrrerai mon application à distance pour produire mes factures, mais je ne pourrai pas offrir ce genre de solution à mes clients, alors je doit rêgler quand même ce problème

    je vais vérifier la dll que tu me proposes, se semble correct, je vais te revenir avec cela, je ne sais pas combien de temps cela va prendre

    j'aurais une autres questions, si jamais je déciderais d'utiliser mon application ou un service windows, comment je peut à partir d'une page apsx transmettre des paramêtres soit à mon application ou à mon service.  J'ai lu qu'il n'étais pas possible ou recommandé de démarrer des exe à partir d'une page web.

    tu aurais une idée ? dois-je utilisé un web service?

    merci encore :)))

    dimanche 10 octobre 2010 17:53
  • j'ai oublier d'ajouter ceci:

    je développe sur une machine principal qui n'est pas mon serveur web, mais sur se serveur Web, vs est installé (il arrive à l'occasion que j'aie des probleme sur le serveur lorsque j'y copie mon site, je debug donc dans vs sur le serveur web lui-même), donc tu peut considérer le serveur comme une station de développement.  De toute façon le problème y est quand même sur les deux machines.

    pour ce qui est du 64bit, ce qui m'embête c'est que ça fonctionne bien dans une windows forms :| les pilotes doivents donc être compatible

    pour le moment je crois que le problème demeure en relation avec ce qui à rapport avec les droits sur un compte en particulier (ce que tu as déjà parlé plutôt) ou une sécurité quel'quonque.  Ca aurais aussi plus rapport avec le fait d'avoir changer de 32 à 64 bit, me semble qu'il y a eu plus de changement surtout au niveau de la sécurité dans les versions 64bit de Windows.  Ou bien le fait que le serveur 32bit utilise correctement l'APIs Win32 contrairement au serveur 64bit.

    j'opterais vraiment par ce que j'ai parler dans le post précédent, en faite le plus simple pour moi pour le moment serais à partir d'une page asp.net(aspx) de mon site pouvoir envoyer une commande à une autre application, service ou démarrer un exe avec des paramêtres en ligne de commande (ex:  un numero d'enregistrement) puis m'occuper de créer le pdf à partir de cette applications, qui elle fonctionne déjà

     

    merci

    dimanche 10 octobre 2010 18:30
  • Bonjour NeoBugs,

     

    Est-ce que vous pouvez confirmer si la solution de M. Scribe fonctionne dans votre application ?

     

    Si vous avez des questions supplémentaires, je vous remercie d’ouvrir un nouveau thread.

     

    Cordialement,

    Alex

     

     

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    dimanche 17 octobre 2010 09:53
  • je ne comprend pas pourquoi cette question étais marqué comme réponse, car dans le fond je n'ai pas vraiment eu de solution, j'ai comme l'impression que ont peut poser des questions, y répondre nous même et ce la marquer comme réponse, je la comprend pas celle-la :(

    d'ailleurs je ne trouve pas non plus que d'utiliser un logiciel tierce correspond à une solution

    de toute façon le logiciel tierce que j'ai finalement utilisé est celui que j'ai fait moi même et non pas itextsharp qui semble non seulement compliqué, mais aussi l'aide n'est pas évidente, clair et difficile à trouver

    je me suis débrouillé par moi-même en utilisant une application windows forms, plutôt que de passer par mon site web

    parcontre j'aurais vraiment aimer connaître le vrai problème, car je ne pourrai offrir à mes clients une tels solutions, se serais bien de savoir c'est quoi le problème...

    et vous Alex, vous n'avez pas de solutions?

    dimanche 17 octobre 2010 15:50
  • Bonjour,

     

    J’ai eu l’impression que la réponse de M. Scribe offrait une bonne solution. Mes excuses si je me suis trompé.

     

    Concernant une meilleure solution, pour le moment je n’ai pas des informations sur la compatibilité de ces pilotes avec les systèmes x64. Peut-être une analyse avec le support téléphonique de Microsoft vous fournira plusieurs détails. En tout cas, je vous tiens au courant si je trouve des nouvelles informations.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    mardi 19 octobre 2010 08:30
  • je dirais plutôt contournement plutôt qu'une solution au probème, de plus parfois je trouve cela plu compliqué de réapprendre un autre logiciel, l'implémenter et le rendre compatible avec une application, versus que peut-être rêgler le problème en corrigant une erreur de conception quelqu'onque sur un pilote et son os

    es-ce que je me trompe ou appeler Microsoft pour arranger un tel problème coûte asser cher?

    et merci à toi de t'y creuser aussi les méninges :)

    évidement qu'une solution, indication ou surtout pourquoi ! serais grandement apprécié, peu importe quand :)

    je vais tenter de discuter avec les deux fourniseurs de pilote concerné

    a+

     

     

    mardi 19 octobre 2010 23:06
  • Bonjour,

     

    Si vous avez la chance de trouver une réponse convenable avant moi, je vous remercie de la partager dans les forums, pour l’usage des autres membres de la communauté.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    mercredi 20 octobre 2010 08:24
  • Donc ce cas, essayer peut-être :
    http://blog.davidyack.com/journal/2008/5/19/iis7-and-32bit-applications.html

    Cela permettrait de forcer IIS à faire tourner ce site en 32 bits. Ensuite :
    - soit le problème est résolu et cela serait effectivement un pb 32 bits vs 64 bits
    - soit ce n'est pas le cas et ce problème pourrait avoir une autre origine (malheureusement sans erreur difficile d'en dire plus)

     Attention : System.Drawing.Printing est explicitement indiqué dans la doc comme non supporté sous ASP.NET : http://msdn.microsoft.com/fr-fr/library/5ekk3hse.aspx

    Jusqu'à présent j'ai toujours utilisé un générateur de rapports plutôt que System.Drawing.Printing dans mes applis ASP.NET...

    Egalement je vois http://support.microsoft.com/kb/895612/fr (donc il faudrait bien un pilote 64 bits ce que ne sont peut-être pas les versions que tu as testé ?)

    Bonne continuation.

     

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mercredi 20 octobre 2010 11:18
    Modérateur
  • bonjour Patrice, merci de ta réponse:

    j'ai lu que tu te questionne sur le pilote 64bit, je suppose que le pilote est 64bit ou du moins compatible, puisqu'il fonctionne correctement sous windows et même sur une application Windows form

    j'ai essayer de mettre l'option 32bit enable dans l'application pool, mais lorsque je fais cela, mon site web ne fonctionne plus, je recoit un erreur 503 (server unavailable), je suppose qu'il faudrais que je me fasse un nouveau site web vierge pour tester ce truc, mais j'epsère que je n'aurais pas à recommencer mon site au complet :( enfin...

    j'ai lu comme toi que ce n'est apparement pas supporter dans asp.net, d'accord, mais ca fonctionne quand même sur mon serveur windows 32 bit, dommage qu'il ne disent pas pourquoi.  J'ai comme l'impression que ce problème pourrais ne jamais se rêgler :(

    quel générateur de rapport utilises-tu?

    jeudi 21 octobre 2010 19:35
  • Je me disais que peut-être l'application était compilée en 32 bit (l'application windows est compilée avec quoi, je crois me souvenir que la version Express compile en x86). De même si le site web est testé directement depuis VS, j'imagine que le serveur de développement ne va tourner qu'en 32 bits (il y a une propriété nouvelle dans System.Environment en 4.0 qui permet de voir si l'os et le process sont en 32 ou 64).

    J'utilise donc Reporting Services qui fait partie de SQL Server (y compris la version Express) :
    http://msdn.microsoft.com/fr-fr/library/ms159273(v=SQL.90).aspx

    J'essaierai éventuellement de faire un essai avec le pilote XPS sur un OS client 64 bits...

     

    Y a des trucs pas simples parfois ;-)


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    vendredi 22 octobre 2010 09:26
    Modérateur