2016-04-22 4 views
0

Я использую Neodynamic SDK для печати документов на стороне клиента.Печать различных документов с использованием разных кнопок

У нас будет 5 документов для печати. Я вижу, как печатать либо 1 документ, либо распечатывать все документы, но есть способ распечатать 1 документ за кнопку. То есть button1 выводит doc1, button2 печатает doc2 и т.д.

Вот что у меня до сих пор

<script runat="server"> 

     Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) 
      fileone() 
      filetwo() 

     End Sub 

     Public Sub fileone() 
      Dim fileToPrint As New PrintFile(Context.Server.MapPath("~/forms/xmlheader.txt"), "xmlheader.txt") 
      If (WebClientPrint.ProcessPrintJob(Request)) Then 

       'Create a ClientPrintJob 
       Dim cpj As New ClientPrintJob() 
       'set client printer, for multiple files use DefaultPrinter... 
       cpj.ClientPrinter = New DefaultPrinter() 
       'set files-printers group by using special formatting!!! 
       'Invoice.doc PRINT TO Printer1 
       cpj.PrintFile = fileToPrint 
       'send it... 
       cpj.SendToClient(Response) 
      End If 
     End Sub 
     Public Sub filetwo() 
      Dim fileToPrint As New PrintFile(Context.Server.MapPath("~/forms/ How To Recover Office Doc.pdf"), " How To Recover Office Doc.pdf") 
      If (WebClientPrint.ProcessPrintJob(Request)) Then 

       'Create a ClientPrintJob 
       Dim cpj As New ClientPrintJob() 
       'set client printer, for multiple files use DefaultPrinter... 
       cpj.ClientPrinter = New DefaultPrinter() 
       'set files-printers group by using special formatting!!! 
       'Invoice.doc PRINT TO Printer1 
       cpj.PrintFile = fileToPrint 
       'send it... 
       cpj.SendToClient(Response) 
      End If 
     End Sub 



     Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
      fileone() 
      ScriptManager.RegisterStartupScript(Me, Me.GetType(), "printForm1", "printForm1();", True) 
     End Sub 

     Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
      filetwo() 
      ScriptManager.RegisterStartupScript(Me, Me.GetType(), "printForm2", "printForm2();", True) 
     End Sub 
</script> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
<title>How to print multiple files to client printers from ASP.NET</title> 
<script type="text/javascript"> 
    function printForm1() { 
     jsWebClientPrint.print(fileone()); 
    } 
    function printForm2() { 
     jsWebClientPrint.print(filetwo()); 
    } 
</script> 
</head> 
<body> 
<%-- Store User's SessionId --%> 
<input type="hidden" id="sid" name="sid" value="<%=Session.SessionID%>" /> 

<form id="form1" runat="server"> 

<h1>How to print multiple files to client printers from ASP.NET</h1> 
Please change the source code to match your printer names and files to test it locally 
<br /><br /> 
&nbsp;<%-- Add Reference to jQuery at Google CDN --%><script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script><%-- Register the WebClientPrint script code --%><%=Neodynamic.SDK.Web.WebClientPrint.CreateScript()%>&nbsp;&nbsp;&nbsp;&nbsp; 
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" 
    Height="156px" Width="156px" /> 
<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button" Height="156px" Width="156px"/> 
<asp:Button ID="Button3" runat="server" onclick="Button3_Click" Text="Button" 
    Height="156px" Width="156px"/> 
<asp:Button ID="Button4" runat="server" onclick="Button4_Click" Text="Button" 
    Height="156px" Width="156px"/> 
<asp:Button ID="Button5" runat="server" onclick="Button5_Click" Text="Button" 
    Height="156px" Width="156px"/> 
    </form> 

</body> 
</html> 

Я думал об изменении filetwo переменной() для clientprintjob cpj2 ...

+0

Что произошло, когда вы подумали об изменении переменной filetwo() на clientprintjob cpj2? – Mogsdad

+0

Два из того же файла распечатываются –

ответ

0

Что вам нужно сделать функцию PrintDoc(), которая получает путь к файлу для печати в качестве параметра. Подпись должна выглядеть следующим образом:

Private Sub PrintDoc(path as String) 

End Sub 

Вам нужно только эту функцию один раз и нет необходимости в суб fileone() и к югу от filetwo() ... до filefive(). Вам просто нужен этот подканал PrintDoc (путь как строка)

Затем вам нужно 5 кнопок, каждое из которых имеет свое собственное событие _Click(), и в этом обработчике событий вы вызываете процедуру PrintDoc, передавая другой параметр каждый раз.

Надеюсь, это поможет.

Удачи вам!

+0

только кажется, что печатает во время page_init(), когда я создаю sub, он никогда не запускает webclientprint.processprintjob (запрос) –

+0

Я получаю ошибку Содержимое PrintJob недопустимо. Процесс задания печати был отменен –

 Смежные вопросы

  • Нет связанных вопросов^_^