2012-05-10 85 views
0

我正在嘗試爲我們的SharePoint場編寫一項功能,該功能允許用戶在文檔庫中選中某個項目,從功能區中選擇一個自定義操作「打印」,然後打印出文檔客戶端。大多數文檔都可以正常打印 - (.docx,.xlsx,.pdf),因爲我可以在每種類型的打印方法中使用ActiveXObjects。但是,沒有用於Outlook的ActiveXObject,可以輕鬆打印.msg文件。其結果是,唯一的方法我已經找到了通過腳本打印.msg文件的客戶端是VBS:在HTML頁面中使用VBScript打印.msg文件客戶端使用VBScript

TargetFolder = "C:\EmailExport" 
Set objShell = CreateObject("Shell.Application") 
Set objFolder = objShell.Namespace(TargetFolder) 
Set colItems = objFolder.Items 
For Each objItem in colItems 
    objItem.InvokeVerbEx("Print") 
Next 

能正常工作在我的本地計算機上的.vbs文件,但分鐘,我嘗試和地點它在.html文件中用於在瀏覽器中測試,它給了我一個Permission Denied錯誤。因爲公司的組策略控制着Internet Explorer,所以我不能修改Internet Explorer的安全級別。

測試的.html頁面是這樣的:

<html> 
<head> 
<script language="vbscript"> 
<!-- 
TargetFolder = "C:\EmailExport" 
Set objShell = CreateObject("Shell.Application") 
Set objFolder = objShell.Namespace(TargetFolder) 
Set colItems = objFolder.Items 
For Each objItem in colItems 
     objItem.InvokeVerbEx("Print") 
Next 
--> 
</script> 
</head> 
<body> 
</body> 
</html> 

沒有任何人有任何解決方案,可以讓我打印出這些.msg文件的客戶端?我想維護Outlook打印出來的格式,所以先將它們轉換爲文本文件等並不是一種真正的選擇...

+0

更新:我得到SetobjFolder = objShell.NameSpace(TargetFolder)行上的權限被拒絕錯誤。我也嘗試過不同的路徑,將文件存儲在運行代碼的SharePoint站點上,並通過UNC路徑等進行訪問。 –

回答

0

出於安全原因,您無法從瀏覽器環境中訪問Namespace方法。 (網頁永遠不需要訪問本地數據目錄。)您需要通過Windows Script Host將其作爲獨立腳本運行。

+0

但我需要它運行在Web瀏覽器中,因爲它是在aspx頁面中生成的。這些文件實際上不會存儲在本地機器上,它們將存儲在某個地方的網站庫中。問題是我需要能夠將這些.msg文件打印到本地打印機。 –

+0

如果文件位於Web服務器上,則不應使用客戶端代碼。而你的路徑不會以C:\開頭。這聽起來像你正在嘗試使用錯誤的工具來完成這項工作。你究竟想要完成什麼? – Nilpo

+0

我正在嘗試使用各種文件類型並將它們打印到連接到客戶端計算機的打印機的機制。對於.docx,.doc和.txt文件,下面的代碼完成我所需要的功能:

0

我試過你的腳本,它的工作原理是從HTML頁面開始的,但只有當你使用Internet Explorer作爲瀏覽器並且用戶需要在他的電腦上擁有足夠的權限並且IE的安全設置需要設置爲啓用Active-X。

+0

嗯是的,但看到這是問題 - 因爲安全設置通過組策略鎖定我不能改變他們..謝謝彼得 –