Imprimer un fichier PDF à partir d'ASP.NET directement sur l'imprimante par défaut sans boîte de dialogue d'impression – Bien choisir son serveur d impression

Author: Titanfall —

Short summary: Création / édition de contrôleurs Créez un nouveau contrôleur et nommez-le WebClientPrintAPIController puis copiez / collez le code suivant: Importe Neodynamic.SDK.Web Contrôleurs d'espace de noms     Classe publique WebClientPrintAPIController         Hérite contrôleur         'GET: WebClientPrintAPI         Fonction Index () As ActionResult             Vue de retour ()         Fonction de fin         '**********************************         ' NOTE IMPORTANTE         'Dans cet exemple, nous stockons des éléments […]

Quick overview

Site
Tutos GameServer
Canonical URL
https://tutos-gameserver.fr/2019/05/04/imprimer-un-fichier-pdf-a-partir-dasp-net-directement-sur-limprimante-par-defaut-sans-boite-de-dialogue-dimpression-bien-choisir-son-serveur-d-impression/
LLM HTML version
https://tutos-gameserver.fr/2019/05/04/imprimer-un-fichier-pdf-a-partir-dasp-net-directement-sur-limprimante-par-defaut-sans-boite-de-dialogue-dimpression-bien-choisir-son-serveur-d-impression/llm
LLM JSON version
https://tutos-gameserver.fr/2019/05/04/imprimer-un-fichier-pdf-a-partir-dasp-net-directement-sur-limprimante-par-defaut-sans-boite-de-dialogue-dimpression-bien-choisir-son-serveur-d-impression/llm.json
Manifest
https://tutos-gameserver.fr/llm-endpoints-manifest.json
Estimated reading time
6 minutes (335 seconds)
Word count
1116

Key points

Structured content

Création / édition de contrôleurs Créez un nouveau contrôleur et nommez-le WebClientPrintAPIController puis copiez / collez le code suivant:

Importe Neodynamic.SDK.Web

Contrôleurs d'espace de noms     Classe publique WebClientPrintAPIController         Hérite contrôleur

        'GET: WebClientPrintAPI         Fonction Index () As ActionResult             Vue de retour ()         Fonction de fin

        '**********************************         ' NOTE IMPORTANTE         'Dans cet exemple, nous stockons des éléments liés aux utilisateurs (comme         'la liste des imprimantes et si elles ont le WCPP         'utilitaire client installé) dans le cache de l'application         'partie objet d'ASP.NET MAIS vous pouvez le changer en         'un autre stockage différent (comme une base de données ou un serveur de fichiers)!         'qui sera requis dans les scénarios de Load Balacing         '**********************************

Public Sub ProcessRequest ()             'obtenir l'identifiant de session             Dim sessionID As String = (Si (HttpContext.Request ("sid") n'est pas rien, HttpContext.Request ("sid"), rien))

            'obtenir une chaîne de requête             Dim queryString As String = HttpContext.Request.Url.Query

            Essayer                 'Déterminer et obtenir le type de demande                 Dim prType As RequestType = WebClientPrint.GetProcessRequestType (queryString)

                Si prType = RequestType.GenPrintScript OrElse prType = RequestType.GenWcppDetectScript alors                     'Laissez WebClientPrint générer le script demandé                     Dim script As Byte () = WebClientPrint.GenerateScript (Url.Action ("ProcessRequest", "WebClientPrintAPI", rien, HttpContext.Request.Url.Scheme), queryString)

                    HttpContext.Response.ContentType = "text / javascript"                     HttpContext.Response.BinaryWrite (script)                     HttpContext.Response.End ()

                ElseIf prType = RequestType.ClientSetWcppVersion Then                     'Cette demande est un ping de l'utilitaire WCPP                     'donc stocke l'ID de session indiquant qu'il a installé le WCPP                     'stocke également la version de WCPP si disponible                     Dim wcppVersion As String = HttpContext.Request ("wcppVer")                     Si String.IsNullOrEmpty (wcppVersion), alors                         wcppVersion = "1.0.0.0"                     Fin si

                    HttpContext.Application.Set (ID de session & "wcppInstalled", wcppVersion)

                ElseIf prType = RequestType.ClientSetInstalledPrinters Then                     'Utilitaire WCPP envoie les imprimantes installées côté client                     'so stocke cette information avec l'ID de session spécifié                     Dim printers As String = HttpContext.Request ("imprimantes")                     Si String.IsNullOrEmpty (printers) = False Then                         printers = System.Text.Encoding.UTF8.GetString (Convert.FromBase64String (imprimantes))                     Fin si

                    HttpContext.Application.Set (ID de session et "imprimantes", imprimantes)

                ElseIf prType = RequestType.ClientGetWcppVersion Then                     'renvoie la version de WCPP pour le sid spécifié, le cas échéant                     Dim sidWcppVersion As Boolean = (HttpContext.Application (sessionID & "wcppInstalled") n'est pas rien)

                    HttpContext.Response.ContentType = "text / plain"                     Si (sidWcppVersion) Alors                         HttpContext.Response.Write (HttpContext.Application (ID de session & "wcppInstalled"). ToString ())                     Fin si                     HttpContext.Response.End ()

                ElseIf prType = RequestType.ClientGetInstalledPrinters Then                     'renvoie les imprimantes installées pour le sid spécifié, le cas échéant                     Dim sidHasPrinters As Boolean = (HttpContext.Application (sessionID & "printers") n'est pas rien)

                    HttpContext.Response.ContentType = "text / plain"                     Si (sidHasPrinters) Alors                         HttpContext.Response.Write (HttpContext.Application (ID de session et "imprimantes"). ToString ())                     Fin si                     HttpContext.Response.End ()

                Fin si             Catch ex As Exception                 HttpContext.Response.StatusCode = 500                 HttpContext.Response.ContentType = "text / plain"                 HttpContext.Response.Write (ex.Message + "- StackTrace:" + ex.StackTrace)                 HttpContext.Response.End ()             Fin essayer

        End Sub

    Classe de fin End Namespace

Modifier le AccueilContrôleur au code suivant:

Classe publique HomeController     Hérite de System.Web.Mvc.Controller

    Fonction Index () As ActionResult         ViewData ("WCPPDetectionScript") = Neodynamic.SDK.Web.WebClientPrint.CreateWcppDetectionScript (Url.Action ("ProcessRequest", "WebClientPrintAPI", Aucune, HttpContext.Request.Uquest.Url.SrlemeScheme), HttpContext.Session.

        Vue de retour ()     Fonction de fin

    Fonction PrintPDF () As ActionResult

        Vue de retour ()     Fonction de fin

Classe de fin

Ajouter un nouveau contrôleur et nommez-le PrintPDFController et collez le code suivant:

Importe Neodynamic.SDK.Web

Contrôleurs d'espace de noms     Classe publique PrintPDFController         Hérite contrôleur

        Fonction Index () As ActionResult

            ViewData ("WCPScript") = Neodynamic.SDK.Web.WebClientPrint.CreateScript (Url.Action ("ProcessRequest", "WebClientPrintAPI", Aucune, HttpContext.Request.Url.Scheme), Url.Action ("PrintFILE", "PrintPDF" ", Nothing, HttpContext.Request.Url.Scheme), HttpContext.Session.SessionID)

            Vue de retour ()         Fonction de fin

Fichier d'impression secondaire public (useDefaultPrinter As String, nomImprimante As String)

            'IMPORTANT: pour les clients Windows, Adobe Reader doit être installé côté client.                                     'chemin complet du fichier PDF à imprimer             Dim pdfFilePath As String = "c: myDocument.pdf"

            'créer un nom de fichier temporaire pour notre fichier PDF ...             Dim fileName As String = "MyFile-" + Guid.NewGuid (). ToString ("N") + System.IO.Path.GetExtension (pdfFilePath)                          'Créer un objet PrintFile avec le fichier PDF             Dim fichier comme nouvelle PrintFile (pdfFilePath, fileName)             'Créez un ClientPrintJob et renvoyez-le au client!             Dim cpj en tant que nouveau ClientPrintJob ()             'set file to print ...             cpj.PrintFile = fichier

            If (useDefaultPrinter = "coché" OrElse printerName = "null") Alors                 cpj.ClientPrinter = New DefaultPrinter ()             Autre                 cpj.ClientPrinter = Nouveau InstalledPrinter (System.Web.HttpUtility.UrlDecode (printerName))             Fin si

            System.Web.HttpContext.Current.Response.ContentType = "application / octet-stream"             System.Web.HttpContext.Current.Response.BinaryWrite (cpj.GetContent ())             System.Web.HttpContext.Current.Response.End ()

        End Sub     Classe de fin End Namespace

Création / édition de vues La vue par défaut permet de détecter si l’utilitaire WebClientPrint Processor (WCPP) est installé sur la machine cliente. Modifier le Vues / partagées / _Layout.vbhtml déposer et ajouter la section suivante au CORPS: Assurez-vous que cette Voir les liens vers jQuery 1.4.1+ fichier!

...

    @RenderSection ("scripts", requis: False)

...

Modifier le Vues / Accueil / Index.vbhtml Fichier et copier / coller le code suivant:

@Code     ViewData ("Title") = "Page d'accueil" Code de fin

Détection de l'utilitaire WCPP côté client ... S'il vous plaît attendez quelques secondes ...

# 1 Installez le processeur WebClientPrint (WCPP)! WCPP est une application native (sans aucune dépendance!) qui gère tous les travaux d'impression         généré par le Composant WebClientPrint for ASP.NET côté serveur. La WCPP         est responsable de l’ensemble du processus d’impression et peut être         installé sur Windows, Linux, Mac et Raspberry Pi! Téléchargez et installez WCPP à partir du site Web Neodynamic # 2 Après avoir installé WCPP ... Vous pouvez aller tester la page d'impression ...

scripts de section

@ * Script de détection WCPP généré par HomeController * @

@ Html.Raw (ViewData ("WCPPDetectionScript"))

    }

Section de fin

Ajoutez une nouvelle vue avec le nom suivant et sous de tels dossiers: Views / PrintPDF / Index.vbhtml Ensuite, copiez / collez le code suivant:

Imprimer le fichier PDF

Imprimer sur l'imprimante par défaut ou...

Cliquez pour charger et sélectionner l'une des imprimantes installées!

Sélectionnez une imprimante installée:

scripts de section          @ * Enregistrez le code de script WebClientPrint généré par PrintPDFController. * @

    @ Html.Raw (ViewData ("WCPScript"))

section @end

Click to rate this post! [Total: 0 Average: 0]

Topics and keywords

Themes: Serveur d'impression

License & attribution

License: CC BY-ND 4.0.

Attribution required: yes.

Manifest: https://tutos-gameserver.fr/llm-endpoints-manifest.json

LLM Endpoints plugin version 1.1.2.