使用ScriptX進行Web列印提示:factory.printing為空或不是物件,不能列印
如果在專案裡使用了ScriptX進行WEB列印時候出錯並提示:factory.printing為空或不是物件,不能列印,那麼原因我自己認為是有2個:
1、ScriptX外掛沒有安裝好;
2、安裝的ScriptX和專案裡的smsx.cab版本不一致。
其實很好解決。
首先,建議你重新在官方網站上下載最新的ScriptX:點選下載
下載後直接安裝,預設安裝即可。
安裝完畢後會自動開啟一個網頁,先別急著關掉,如果你英文水平夠好,可以從中看到不少東西,包括怎麼使用。
(強烈建議看完它,此HTML檔案是在安裝的根目錄下:C:\Program Files\MeadCo ScriptX Resource Kit\readme Client.htm)
當然你可以使用谷歌瀏覽器把它翻譯成中文,但會對其中程式碼有影響。
然後,在ScriptX安裝的目錄下的redist資料夾中把smsx.cab拷貝到你的專案中,如我的安裝目錄是:
C:\Program Files\MeadCo ScriptX Resource Kit\redist
最後,一定要確認頁面中<object></object>中的codebase的路徑正確和安裝的ScriptX版本對應。這樣應該就可以了。
我自己的例子:
ScriptX版本 : 7,0,0,8
頁面內容:
<!-- MeadCo Security Manager -->
<object id="secmgr" viewastext style="display:none"
classid="clsid:5445be81-b796-11d2-b931-002018654e2e"
codebase="/oa/suppliesmgm/js/smsx.cab#Version=7,0,0,8">
<param name="GUID" value="{0ADB2135-6917-470B-B615-330DB4AE3701}">
<param name="Path" value="http://www.meadroid.com/scriptx/sxlic.mlf">
<param name="Revision" value="0">
</object>
<!-- MeadCo ScriptX -->
<object id="factory" viewastext style="display:none"
classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814">
</object>
JS程式碼:
//列印
function fun_print() {
factory.printing.header = "";//頁首
factory.printing.footer = "";//頁尾
factory.printing.leftMargin = 1.0;//左邊距
factory.printing.topMargin = 1.3;//上邊距
factory.printing.rightMargin = 1.0;//右邊距
factory.printing.bottomMargin = 1.3;//下邊距
factory.printing.portrait = true;//列印方向,true:縱向.false:橫向
factory.DoPrint(false);//設定為false,直接列印
}
上面JS函式只要在你定義的列印按鈕呼叫它即可。--------------------------------------------------------------------------------------------------------------------------------------------------------------------
不知道為什麼我如果像下面形式就不行,還會報上沒為空或不是物件的提示,所以我只能按照官方詳細的寫法(上面):<!-- MeadCo ScriptX -->
<object id="factory" viewastext style="display:none"
classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
codebase="http://[your_path]/smsx.cab#Version=7,0,0,8">
</object>