Partage
  • Partager sur Facebook
  • Partager sur Twitter

Impression pdf via Acrobate ( VS2019 =OK, IIS =KO)

    12 janvier 2021 à 18:47:57

    Bonjour à tous.

    Je viens de chercher toute la journée sans résultat je ne peux que donc que faire appel à vous maintenant.
    Je possède un serveur sous Windows Server 2012 R2 que nous utilisons en TSE.

    J'ai développé une application Web ASP.NET sous Visual Studio 2019.

    J'ai un script qui me permet de lancer une impression ( côté serveur ) en ouvrant Acrobat Reader  en "minimisé". Le script fonctionne parfaitement lorsque je teste depuis Visual Studio. Mais dès que je déploie sur le serveur ( IIS 8.5 ), cela ne fonctionne plus. Je vois le processus d'arrière plan dans le gestionnaire de tache mais plus rien.

    Je pense bien que c'est un soucis de droit, car quand je lance dans Visual Studio il utilise mon compte utilisateur alors que lorsque je suis sur le site en prod, il utilise l'utilisateur "DefaultAppPool" à travers IIS.

    Je suis désolé, c'est peut être basique, mais je ne trouve vraiment pas de solution :(

    • Partager sur Facebook
    • Partager sur Twitter
      12 janvier 2021 à 19:46:53

      C'est très très moyen de passer par un programme externe, c'est la mort de la monté en charge et la galère au niveau droit, monitoring, gestion des communications, etc...

      Si le programme externe n'a pas été conçu pour ce genre d'utilisation, vous allez galérer pour pas grand-chose.

      Préférez utilisez des composants .NET (même si c'est des wrappers autour de programmes externes, ils doivent gérer cela correctement).

      Je doute qu'Acrobat Reader ait été conçu pour ce type d'utilisation.

      Des composants .NET de génération de PDF, c'est pas ça qui manque (après, il y a très souvent des limitations avec ces trucs).

      Je trouve votre argumentaire pour trouver votre bouc émissaire assez léger. Utilisez au moins un outil comme Process Monitor pour bien vérifier que c'est un problème de droit et pas autre chose.

      Changer l'utilisateur du Pool de Thread .NET, c'est normalement pas très compliquer à faire sur la "console" d'IIS. Ca serait mieux que cela soit dans le mécanisme de déploiement de votre application mais vous n'indiquez pas le mode de déploiement que vous utilisez.

      Après, désactiver l'impersonnalisation d'IIS et utiliser des comptes avec "pouvoir" dans le Pool de Thread .NET, c'est potentiellement de gros trous de sécurité dans votre système.

      Comme déjà dit, en utilisant des composants .NET, vous ne devriez pas avoir à faire ce genre de compromission.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        13 janvier 2021 à 8:16:30

        Bonjour,

        Désolé je suis débutant et je ne comprends pas forcément tout ton message :-P

        De mon coté, j'ai créer les pdf avec ITEXTSHARP, je les ai ensuite enregistrés sur le disque.

        En cherchant comment les imprimer de manière "silencieuse", j'ai trouvé le code suivant :

          Process proc = new Process();
                        proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                        proc.StartInfo.Verb = "print";
        
                        proc.StartInfo.FileName = @"CHemin_vers_logiciel_\AcroRd32.exe";
                        proc.StartInfo.Arguments = String.Format("/t \"{0}\" \"{1}\"", path, Printer);
                        proc.StartInfo.UseShellExecute = false;
                        proc.StartInfo.CreateNoWindow = false;
        
                        proc.Start();
                        proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
                        if (proc.HasExited == false)
                        {
                            proc.WaitForExit(10000);
                        }
        
                        proc.EnableRaisingEvents = true;
        
                       proc.Close();

        Je t'avoue que je n'ai pas vraiment trouvé d'autre solution hormis passer par Foxit Reader.

        Si il y a moyen d'imprimer un pdf sans passer par un logiciel, je suis preneur. Est-ce que tu aurais un exemple  STP ?

        L'application ASP.NET est déployé en local ( c'est un intranet local ) et les connexions qui y accèdent sont toujours locales également.

        -
        Edité par SébastienMirsky 13 janvier 2021 à 8:50:43

        • Partager sur Facebook
        • Partager sur Twitter
          13 janvier 2021 à 12:05:43

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            13 janvier 2021 à 16:29:24

            Bonjour,

            Merci pour ton message. Je viens de regarder. SpirePDF est une Librairie payante sur laquelle je m'étais renseigné au début, mais j'ai opté pour Itext.

            Pour Ghostscript, le problème sera le même car il faut exécuter un exe pour lancer l'impression.
            D'après mes dernières recherches, je pense que le soucis est vraiment un problème de droit de l'utilisateur IIS ( ou du groupe IIS_IUSRS) sur mon serveur et plus précisément sur mon domaine.
            Donc pas sur que le soucis soit sur ASP.NET voire même sur IIS.

            • Partager sur Facebook
            • Partager sur Twitter
              13 janvier 2021 à 17:23:00

              >Pour Ghostscript, le problème sera le même car il faut exécuter un exe

              La librairie Ghostscript.NET est un wrapper. Qu'elle appelle un autre exécutable ou pas, c'est plus votre problème, s'il le fait bien. Sur le papier, Ghostscript.NET appelle une librairie C, pas l'exécutable.

              Il y a pas mal de moyen pour "contourner" les problèmes de droits, mais si vous utilisez des wrappers, c'est justement pour ne pas avoir à gérer ce type de problème.

              Si vous cherchez toujours un bouc émissaire (autre que le fait d'utiliser un programme externe, c'est caca), utilisez Process Monitor ( https://docs.microsoft.com/en-us/sysinternals/downloads/procmon ) plutôt que votre doigt mouillé.

              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                14 janvier 2021 à 17:30:50

                Je vais regarder tout ça. Merci beaucoup !

                -
                Edité par SébastienMirsky 15 janvier 2021 à 10:49:45

                • Partager sur Facebook
                • Partager sur Twitter
                  16 janvier 2021 à 1:48:16

                  Je suis perdu :(

                  Tout d'abord tu avais raison. Le soucis n'est pas forcement exe.
                  J'ai fais un script d'impression avec Ghostscript, le problème est le même.  ( VS2019 =OK, IIS =KO )

                  Du coup je me suis dit, je vais juste afficher le pdf. Et la une belle erreur

                  Accès refusé

                  Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

                  Détails de l'exception: System.ComponentModel.Win32Exception: Accès refusé


                  J'ai essayé de jouer avec les droits des dossiers, les utilisateurs les identités dans IIS. Rien n'y fait. J'ai toujours un Accès refusé.
                  Le soucis c'est que je ne sais pas vraiment quel accès est refusé à quoi ...


                  J'ai essayé Process Monitor, mais il y a tellement d'activité que je n'arrive pas à m'y retrouver...


                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 janvier 2021 à 9:45:50

                    Ajoutez quelques filtres.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

                    Impression pdf via Acrobate ( VS2019 =OK, IIS =KO)

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown