web-dev-qa-db-fra.com

Imprimer directement depuis une application Web vers une imprimante locale

Mon exigence est d’imprimer les factures au format pdf directement sur l’imprimeur local à partir d’une application Web développée dans le cadre .net mvc.

J'ai besoin de faire exactement comme shipstation fait avec SHIPSTATION CONNECT

SHIPSTATION CONNECT

Est-ce qu'il utilise un processus comme 

CODEPROJET DE PARTAGE D'IMPRIMANTE A DISTANCE

ou en utilisant la bibliothèque WMI pour partager l’imprimante à distance.

Tout expert en la matière m'aidera, ainsi que mon programmeur, à construire la solution. Je ne m'attends pas à un code ni à une alimentation à la cuillère, mais je souhaite connaître le processus et la manière de commencer dans la bonne direction.

Merci d'avance pour l'aide!

cordialement

7
sunny

vous pouvez écrire une fonction javascript qui imprime depuis une imprimante locale,

w=window.open();
w.document.open();
w.document.write("<html><head></head><body>");
w.document.write("HI");
w.document.write("</body></html>");
w.document.close();
w.print();
w.close();

exemple de travail:

http://jsfiddle.net/xwgq5ap4/

si vous souhaitez imprimer à partir du serveur, vous devez envoyer une demande, par exemple: www.mysite.com/print.aspx?file=invoice.pdf

pour l'imprimer par le serveur, vous avez 2 solutions; la première appelle un autre processus pour l'exécuter, comme vous pouvez le voir dans cette réponse:

Imprimer le fichier PDF en C #

la seconde est d'écrire votre propre implémentation en utilisant l'espace de noms PrintDocument, par exemple:

namespace PrintPDF
{
    class Program
    {
        static void Main(string[] args)
        {
            PdfDocument doc = new PdfDocument();
            doc.LoadFromFile("sample.pdf");

            //Use the default printer to print all the pages
            //doc.PrintDocument.Print();

            //Set the printer and select the pages you want to print

            PrintDialog dialogPrint = new PrintDialog();
            dialogPrint.AllowPrintToFile = true;
            dialogPrint.AllowSomePages = true;
            dialogPrint.PrinterSettings.MinimumPage = 1;
            dialogPrint.PrinterSettings.MaximumPage = doc.Pages.Count;
            dialogPrint.PrinterSettings.FromPage = 1;
            dialogPrint.PrinterSettings.ToPage = doc.Pages.Count;

            if (dialogPrint.ShowDialog() == DialogResult.OK)
            {
                doc.PrintFromPage = dialogPrint.PrinterSettings.FromPage;
                doc.PrintToPage = dialogPrint.PrinterSettings.ToPage;
                doc.PrinterName = dialogPrint.PrinterSettings.PrinterName;

                PrintDocument printDoc = doc.PrintDocument;
                dialogPrint.Document = printDoc;
                printDoc.Print();
            }

        }
    }
}

original extrait de bibliothèque tierce gratuite

1
Proxytype

vérifiez printnode.com pourrait vous être utile. Cela ressemble à faire ce que vous voulez. Le service n’est pas gratuit, mais vous pouvez également le créer à l’aide de Google Cloud Print.

1
Saurabh D