2015-06-27 31 views
7

Il mio fabbisogno è stampare fatture in pdf direttamente su stampante locale dall'applicazione Web sviluppata in .net mvc framework.Stampa diretta dall'applicazione Web alla stampante locale

ho bisogno di fare esattamente come sta facendo con shipstation SHIPSTATION CONNECT

SHIPSTATION CONNECT

La usa come processo

REMOTE PRINTER SHARING CODEPROJECT

o utilizzando la libreria WMI per condividere stampante in modalità remota.

Qualsiasi pensiero esperto aiuterà me e il mio programmatore a costruire la soluzione.

Grazie in anticipo per l'aiuto!

riguarda

+0

ho provato a cercare nello stack la soluzione e non ho trovato alcuna soluzione vicino a questo. Ci sono alcuni esempi per java ma ho bisogno di visualizzazioni di esperti per C# per raggiungere questo obiettivo. – sunny

+0

dove è collegata la stampante? al server o al client? Stampante – Proxytype

+0

collegata localmente al client. Ma una volta premuto il pulsante di stampa dall'applicazione Web che stampa dalla stampante locale. – sunny

risposta

1

è possibile scrivere javascript funzione che la stampa da stampante 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(); 

esempio funzionante:

http://jsfiddle.net/xwgq5ap4/

se si desidera stampare dal server è necessario inviare una richiesta per il server ad esempio: www.mysite.com/print.aspx?file=invoice.pdf

stamparlo dal server avete 2 soluzioni la prima chiama ad altro processo per realizzare esso come si può vedere in questa risposta:

Print Pdf in C#

la seconda è scrivere il proprio implementazione utilizzando PrintDocument namespace per esempio:

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(); 
      } 

     } 
    } 
} 

originale tratto da free 3rd party library

+0

apprezzo il tuo sforzo.Non ha funzionato come vogliamo.Il nostro requisito per stampare file PDF direttamente alla stampante locale senza aprire il file nel browser o nel riquadro nascosto.Esso dovrebbe comportarsi come la stampa desktop come realizzato da shiptation.Puoi vedere qui http: //help.shipstation.com/customer/portal/articles/1818589 – sunny

+0

abbiamo cercato su StackOverflow accuratamente prima di postare questo e il campione fornito dal vostro abbiamo già provato. – sunny

+0

Nel tuo esempio si deve premere il pulsante di stampa per stampare definitivamente. Non abbiamo bisogno di quel passo in più. Deve solo passare questo come fatto da Shipstation. Bisogna comportarsi come una stampa desktop. – sunny

0

controllo pr intnode.com potrebbe essere di qualche aiuto.Sembra fare la stessa cosa quello che vuoi.Il servizio non è a pagamento o in alternativa puoi costruire lo stesso usando google cloud print.

Problemi correlati