今天开篇就来说说ASP.NET,flexpaper,SWFTools 实现简单的PDF显示(二)中留下的那个疑问。记得在二中说过:
首先是报错的问题:是因为版本问题导致的,iTextAsian.dll和iTextAsianCmaps.dll这两个中文支持库出现的比较早,好似到现在也没有更新,而itextsharp.dll却在不断的更新,5.0.0版本到现在的5.4.1 (以前使用的5.0.2以上的版本报错了,如今使用的5.0.2版本支持上面说的那两个中文库,因此问题解决了) itextsharp下载地址: http://sourceforge.net/projects/itextsharp/files/itextsharp/
其次是pdf在线显示问题:(二)中也说了使用上面这种字体的一个好处就是生成的pdf文件流或者说文件很小,有利于把pdf文件流保存到数据库中,适用于生产pdf相对保密的程序中。可问题是,用这种方式的字体单一,同时生产的pdf无法使用SWFTools转换为swf,并使用flexpaper在线显示,这可是麻烦问题,不过后来我了解到有些专业的pdf公司能做到。不过做自己的程序无法说去买其他公司的插件,但还是用解决的办法。
我现在的解决方案:(这里我使用的是.net mvc3)
<div>
<iframe id="iframeshow" src="" width="700" height="670" frameborder="0" style="background-color:transparent"></iframe>
@*<embed src="../../pdf/行政处罚决定书(带章).pdf" width="800" height="600"></embed>*@
</div>
没错就是<iframe> 属性src里面的是pdf文件的完整路径,如:src="../pdf/test.pdf"
说明:(用这种方式在第一次进入界面的时候应该会提示安装adoble pdf的插件,我是相关pdf的如pdf reader什么的都装了,第一次运行是如何的无法知道)
图为在Google Chrome浏览器下的效果,左边.pdf是pdf文件列表,右边为显示效果,注:ie,火狐的效果会不同
最后 看了这篇或许你会觉得flexpaper+SWFTools 这中在线显示方案不怎么样,但事物都有两面性,它也有它的优点。各位慢慢的探索吧!
总结:其实出现问题不可怕,可怕的是没有应对问题的解决方案。