最近公司要升级服务器,以前用的是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官方技术支持和常见问题解答网址:http://www.websupergoo.com/support.htm#security