最近公司要升級服務器,以前用的是windows server 2003,后來要直接升級到windows 2012,以前做的一些網站都要遷移,其中一個網站用到了第三方控件ABCpdf,這個是用于PDF的控件,我們主要用了它的將HTML網頁轉換為PDF文件,使用的版本是6.1.1.5,而且網站是使用.NET Framework2.0開發的,剛開始遷移時以為沒有問題,后來發現在64位系統下有很多問題,下面總結一下:



1、如果要使用舊版本的ABCpdf(項目中使用的是6.1.1.5,最新的為ABCpdf9.1.2.3,直接支持64位系統的),首先要在IIS中設置應用程序池,即Application Pool,設置它的啟用32位應用程序為True,然后需要在windows server 2012的注冊表中添加以下鍵和一個值:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\InternetExplorer\MAIN\FeatureControl\,添加的鍵名稱為FEATURE_IVIEWOBJECTDRAW_DMLT9_WITH_GDI,在該鍵下面添加一個DWORD類型的值,名稱為"w3wp.exe",w3wp.exe是用來為每個應用程序池分配資源的,然后將該值設置為1,否則會出現“HTML render is blank”或者“Unable to render HTML”等錯誤。



2、如果要使用高版本的(ABCpdf9.1.2.3,似乎 低版本的開發商已停止了支持和更新)同樣需要在注冊表下添加相應的鍵值,而且在引用高版本的dll時,如果項目的目標輸出是.NET Framework2.0的,則會被要求升級到.NET Framework4.0(ABCpdf9.1.2.3必須要求.NET Framework4.0以上),添加注冊表鍵值的位置在:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\,添加的鍵名稱為FEATURE_IVIEWOBJECTDRAW_DMLT9_WITH_GDI,在該鍵下面添加一個DWORD類型的值,名稱為"w3wp.exe",然后將該值設置為1,否則也會出現像問題1中所說的錯誤。



3、我試了下在高版本的ABCpdf中將HTML轉為PDF的功能,發現有些亂碼,懷疑是程序編碼問題和HTML格式不規范,但我試了幾種編碼,輸出還是亂碼,這個是比較糾結的,目前還沒有查找是什么原因。



4、ABCpdf官方技術支持和常見問題解答網址://www.websupergoo.com/support.htm#security