如何利用ASP.net在网页中打开pdf文件,但又无法让访问者下载。

时间:2022-05-11 00:49:57
在网页中datagrid中显示一个链接,点链接后即可在IE中打开链接的pdf文件。想通过一些手段使此pdf文件不可被访问者通过“另存为”保存在本地,请问:
1 、如何调用本地PDF阅读器打开PDF文件(或在web直接输出)?
2、如何不让访问者另存为?

19 个解决方案

#1


你这个在上传的时候最好把pdf转为flash,然后用flash播放器播放,如果用本地pdf阅读器打开了就控制不了另存为了

#2


引用 1 楼 u013756007 的回复:
你这个在上传的时候最好把pdf转为flash,然后用flash播放器播放,如果用本地pdf阅读器打开了就控制不了另存为了

服务器端安装flash播放器,让后调用吗?

#3


引用 2 楼 arpaul87 的回复:
Quote: 引用 1 楼 u013756007 的回复:

你这个在上传的时候最好把pdf转为flash,然后用flash播放器播放,如果用本地pdf阅读器打开了就控制不了另存为了

服务器端安装flash播放器,让后调用吗?

就是找js 的flash播放器,网上有很多,一般都是连路径后配置点参数就能播放了

#4


引用 3 楼 u013756007 的回复:
Quote: 引用 2 楼 arpaul87 的回复:

Quote: 引用 1 楼 u013756007 的回复:

你这个在上传的时候最好把pdf转为flash,然后用flash播放器播放,如果用本地pdf阅读器打开了就控制不了另存为了

服务器端安装flash播放器,让后调用吗?

就是找js 的flash播放器,网上有很多,一般都是连路径后配置点参数就能播放了

怎么调用本地的PDF阅读器打开PDF文件?

#5


谁有第三方控件可以给我发一个,谢谢啦 381005400@qq.com
或者可以告诉我如何在upload的时候转换成swf的方法,谢谢

#6


其实就算转成了flash,flash也是有办法弄到客户端上的
毕竟服务端必须把数据发到客户端,客户端才能看
虽然在浏览器上直接另存为是不行的,但是到IE临时文件夹里去找,还是能够找到
然后就可以用客户端本地的IE或者SWF播放器播放了

#7


引用 6 楼 Z65443344 的回复:
其实就算转成了flash,flash也是有办法弄到客户端上的
毕竟服务端必须把数据发到客户端,客户端才能看
虽然在浏览器上直接另存为是不行的,但是到IE临时文件夹里去找,还是能够找到
然后就可以用客户端本地的IE或者SWF播放器播放了

上传的时候怎么转换成flash,有哪些方法?问度娘了,没找到。

#8


http://www.cnblogs.com/wuhenke/archive/2010/08/01/1789750.html
需要你在服务器端安装Flash Paper
其实方法有很多,但是道理都是一样的,都是将pdf转换为swf,在Flashplayer中播放

#9


理论上,网页形式的是不可能做到的,毕竟这个是得先把资料下载到客户端才可以的

#10


引用 9 楼 skyw941 的回复:
理论上,网页形式的是不可能做到的,毕竟这个是得先把资料下载到客户端才可以的

调用本地PDF阅读器怎么实现?需要下载什么第三方控件?

#11


引用 10 楼 arpaul87 的回复:
Quote: 引用 9 楼 skyw941 的回复:

理论上,网页形式的是不可能做到的,毕竟这个是得先把资料下载到客户端才可以的

调用本地PDF阅读器怎么实现?需要下载什么第三方控件?

我是说你要展示的内容,需要先下载到客户端。

#12


我们在 silverlight 中以“书籍翻页的形式”展示 Excel、Word、Pdf 等文档,而不把文档下载到客户端。silverlight 是用来开发酷炫的游戏的,自然可以做到这些。

#13


FLASH靠谱,本地都打开了。。。如何叫人家不保存。。。

#14


 public void ConvertPdfToSwf(string inFilename, string swfFilename)
        {
            try
            {
                string flashPrinter = string.Concat(AppDomain.CurrentDomain.BaseDirectory, @"FlashPaper2.2\FlashPrinter.exe");
                ProcessStartInfo startInfo = new ProcessStartInfo(flashPrinter);
                startInfo.Arguments = string.Concat(inFilename, " -o ", swfFilename);
                Process process = new Process();
                process.StartInfo.CreateNoWindow = false; 
                process.StartInfo = startInfo;
                process.Start();
                process.WaitForExit();
                process.Close();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }
filePath 是PDF的物理路径
 savePath 是输出swf的物理路径
先将PDF上传到服务器上,后再获取路径转换swf,但是用了上面的方法,没有输出转换后的swf文件,请问大师哪里有问题,谢谢

#15


调用 :  ConvertPdfToSwf(filePath, savePath);

filePath : D:\\新建文件夹\\FileManager\\FileManager\\1.pdf

savePath:D:\\新建文件夹\\FileManager\\FileManager\\1.swf

#16


我们的OA中在采用“某pdf文件第一次被浏览查看时将该pdf转换成图片格式以供浏览,以后的浏览都用之前转换好的图片”的方式。效果还可以哦。

#17


引用 14 楼 arpaul87 的回复:
 public void ConvertPdfToSwf(string inFilename, string swfFilename)
        {
            try
            {
                string flashPrinter = string.Concat(AppDomain.CurrentDomain.BaseDirectory, @"FlashPaper2.2\FlashPrinter.exe");
                ProcessStartInfo startInfo = new ProcessStartInfo(flashPrinter);
                startInfo.Arguments = string.Concat(inFilename, " -o ", swfFilename);
                Process process = new Process();
                process.StartInfo.CreateNoWindow = false; 
                process.StartInfo = startInfo;
                process.Start();
                process.WaitForExit();
                process.Close();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }
filePath 是PDF的物理路径
 savePath 是输出swf的物理路径
先将PDF上传到服务器上,后再获取路径转换swf,但是用了上面的方法,没有输出转换后的swf文件,请问大师哪里有问题,谢谢


你这个代码里,哪一行是输出文件的?

#18


引用 17 楼 sp1234 的回复:
你这个代码里,哪一行是输出文件的?


startInfo.Arguments = string.Concat(inFilename, " -o ", swfFilename);
这句不是已经将PDF转换成swf了吗?
如果说是没有输出文件的问题,我也不知道转换后的文件放到哪了 ,怎么输出。

#19


引用 16 楼 matrixkey 的回复:
我们的OA中在采用“某pdf文件第一次被浏览查看时将该pdf转换成图片格式以供浏览,以后的浏览都用之前转换好的图片”的方式。效果还可以哦。

用什么方法可以将PDF转换成图片,这个的确是很好的办法,只是不会方法

#1


你这个在上传的时候最好把pdf转为flash,然后用flash播放器播放,如果用本地pdf阅读器打开了就控制不了另存为了

#2


引用 1 楼 u013756007 的回复:
你这个在上传的时候最好把pdf转为flash,然后用flash播放器播放,如果用本地pdf阅读器打开了就控制不了另存为了

服务器端安装flash播放器,让后调用吗?

#3


引用 2 楼 arpaul87 的回复:
Quote: 引用 1 楼 u013756007 的回复:

你这个在上传的时候最好把pdf转为flash,然后用flash播放器播放,如果用本地pdf阅读器打开了就控制不了另存为了

服务器端安装flash播放器,让后调用吗?

就是找js 的flash播放器,网上有很多,一般都是连路径后配置点参数就能播放了

#4


引用 3 楼 u013756007 的回复:
Quote: 引用 2 楼 arpaul87 的回复:

Quote: 引用 1 楼 u013756007 的回复:

你这个在上传的时候最好把pdf转为flash,然后用flash播放器播放,如果用本地pdf阅读器打开了就控制不了另存为了

服务器端安装flash播放器,让后调用吗?

就是找js 的flash播放器,网上有很多,一般都是连路径后配置点参数就能播放了

怎么调用本地的PDF阅读器打开PDF文件?

#5


谁有第三方控件可以给我发一个,谢谢啦 381005400@qq.com
或者可以告诉我如何在upload的时候转换成swf的方法,谢谢

#6


其实就算转成了flash,flash也是有办法弄到客户端上的
毕竟服务端必须把数据发到客户端,客户端才能看
虽然在浏览器上直接另存为是不行的,但是到IE临时文件夹里去找,还是能够找到
然后就可以用客户端本地的IE或者SWF播放器播放了

#7


引用 6 楼 Z65443344 的回复:
其实就算转成了flash,flash也是有办法弄到客户端上的
毕竟服务端必须把数据发到客户端,客户端才能看
虽然在浏览器上直接另存为是不行的,但是到IE临时文件夹里去找,还是能够找到
然后就可以用客户端本地的IE或者SWF播放器播放了

上传的时候怎么转换成flash,有哪些方法?问度娘了,没找到。

#8


http://www.cnblogs.com/wuhenke/archive/2010/08/01/1789750.html
需要你在服务器端安装Flash Paper
其实方法有很多,但是道理都是一样的,都是将pdf转换为swf,在Flashplayer中播放

#9


理论上,网页形式的是不可能做到的,毕竟这个是得先把资料下载到客户端才可以的

#10


引用 9 楼 skyw941 的回复:
理论上,网页形式的是不可能做到的,毕竟这个是得先把资料下载到客户端才可以的

调用本地PDF阅读器怎么实现?需要下载什么第三方控件?

#11


引用 10 楼 arpaul87 的回复:
Quote: 引用 9 楼 skyw941 的回复:

理论上,网页形式的是不可能做到的,毕竟这个是得先把资料下载到客户端才可以的

调用本地PDF阅读器怎么实现?需要下载什么第三方控件?

我是说你要展示的内容,需要先下载到客户端。

#12


我们在 silverlight 中以“书籍翻页的形式”展示 Excel、Word、Pdf 等文档,而不把文档下载到客户端。silverlight 是用来开发酷炫的游戏的,自然可以做到这些。

#13


FLASH靠谱,本地都打开了。。。如何叫人家不保存。。。

#14


 public void ConvertPdfToSwf(string inFilename, string swfFilename)
        {
            try
            {
                string flashPrinter = string.Concat(AppDomain.CurrentDomain.BaseDirectory, @"FlashPaper2.2\FlashPrinter.exe");
                ProcessStartInfo startInfo = new ProcessStartInfo(flashPrinter);
                startInfo.Arguments = string.Concat(inFilename, " -o ", swfFilename);
                Process process = new Process();
                process.StartInfo.CreateNoWindow = false; 
                process.StartInfo = startInfo;
                process.Start();
                process.WaitForExit();
                process.Close();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }
filePath 是PDF的物理路径
 savePath 是输出swf的物理路径
先将PDF上传到服务器上,后再获取路径转换swf,但是用了上面的方法,没有输出转换后的swf文件,请问大师哪里有问题,谢谢

#15


调用 :  ConvertPdfToSwf(filePath, savePath);

filePath : D:\\新建文件夹\\FileManager\\FileManager\\1.pdf

savePath:D:\\新建文件夹\\FileManager\\FileManager\\1.swf

#16


我们的OA中在采用“某pdf文件第一次被浏览查看时将该pdf转换成图片格式以供浏览,以后的浏览都用之前转换好的图片”的方式。效果还可以哦。

#17


引用 14 楼 arpaul87 的回复:
 public void ConvertPdfToSwf(string inFilename, string swfFilename)
        {
            try
            {
                string flashPrinter = string.Concat(AppDomain.CurrentDomain.BaseDirectory, @"FlashPaper2.2\FlashPrinter.exe");
                ProcessStartInfo startInfo = new ProcessStartInfo(flashPrinter);
                startInfo.Arguments = string.Concat(inFilename, " -o ", swfFilename);
                Process process = new Process();
                process.StartInfo.CreateNoWindow = false; 
                process.StartInfo = startInfo;
                process.Start();
                process.WaitForExit();
                process.Close();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }
filePath 是PDF的物理路径
 savePath 是输出swf的物理路径
先将PDF上传到服务器上,后再获取路径转换swf,但是用了上面的方法,没有输出转换后的swf文件,请问大师哪里有问题,谢谢


你这个代码里,哪一行是输出文件的?

#18


引用 17 楼 sp1234 的回复:
你这个代码里,哪一行是输出文件的?


startInfo.Arguments = string.Concat(inFilename, " -o ", swfFilename);
这句不是已经将PDF转换成swf了吗?
如果说是没有输出文件的问题,我也不知道转换后的文件放到哪了 ,怎么输出。

#19


引用 16 楼 matrixkey 的回复:
我们的OA中在采用“某pdf文件第一次被浏览查看时将该pdf转换成图片格式以供浏览,以后的浏览都用之前转换好的图片”的方式。效果还可以哦。

用什么方法可以将PDF转换成图片,这个的确是很好的办法,只是不会方法

#20