2010-06-09 494 views
1

我開發了一個C#web應用程序,它調用返回base64編碼數組(PDF文件)的Web服務。然後我將該數組轉換成一個UCOMistream對象(我知道它已經過時,但我使用的DLL需要它作爲參數)。我使用下面的代碼來完成完美的轉換。我可以將此對象傳遞給DLL,以便我可以打印PDF。將對象從web服務器傳遞到客戶端

這在網絡服務器上效果很好,但要求在本地打印。

 Byte[] bBuffer = statementOut.statementcycle.statementdata.content; 
     int size = bBuffer.Length; 
     IntPtr mem = Marshal.AllocHGlobal(size); 
     Marshal.Copy(bBuffer, 0, mem, size); 
     // Create an OLE Stream object. 
     System.Runtime.InteropServices.UCOMIStream str; //obsolete but the createstreamonhglobal outputs it 
     CreateStreamOnHGlobal(mem, true, out str); 

該DLL駐留在客戶端上,所以我可以使用ActiveX來使用JavaScript創建和/或VBScript的對象;但是,我一直無法弄清楚如何獲得流對象給客戶端傳遞給DLL。

這是如何實現的?

回答

1

難道你不能只在服務器上生成pdf並讓客戶端下載它嗎?

+0

無法在服務器上生成pdf。我們正在尋找其他方式,因爲它是一個Web服務器場,他們不知道服務器是否有權訪問文件共享。 – 2010-06-10 12:05:05

1

讓客戶端下載該base64編碼數組,然後將數據轉換爲UCOMistream對象並生成PDF客戶端。

+0

同意。這是我的另一種選擇,但我無法弄清楚如何用腳本將數據轉換成UCOMIStream對象。你能提供嗎? – 2010-06-10 12:06:06

+0

你是什麼意思「與腳本。」客戶端應用程序是C#應用程序還是其他內容?我認爲你應該能夠返回字節流/數組並將其打印到.pdf擴展名的文件中。只要所有的數據都完好無損地傳遞下來,那麼這個文件應該工作得很好。 – 2010-06-10 17:57:05

+0

然而,這是一個Web應用程序,爲了在本地打印,您必須使用腳本(如JavaScript)才能訪問客戶端等,以便在客戶端上運行該腳本。我找不到一種方法將流從服務器傳遞到客戶端。這是我的原始問題。一旦我得到了流,然後我可以簡單地實例化客戶端上的PDF DLL,並將流傳遞給它,並將其打印到本地打印機。 如何從網絡服務器獲取流對象,以便我可以通過javascript和/或vbscript訪問它? – 2010-06-11 12:04:52

相關問題