在做一个项目,客户有个变态的需求:就是PPT文件提供在线打开,不能下载。不提供下载,,怎么把PPT文件输出到HTML或者用图片打开?? 最好提供代码,,不要给我下面这两个链接,,我没账号。。ppt=>html:
http://www.codeproject.com/vb/net/litewait.aspppt=>image:
http://www.codeproject.com/cs/media/PowerpointBitmaps.asp

解决方案 »

  1.   

    把ppt另存为html,别的办法是实在不大可行或者自己开发个activex控件
      

  2.   

    应该有Office互相转换的方法,以前见过一个程序把PPT转成HTML的,现在忘了。
    我以前也遇到过一个变太客户,要求在哪一台机子上注册,就只能在哪一台机子上登陆
      

  3.   

    我也不太会,但是可以给你个建议。转换成流,然后判断request
      

  4.   

    要求在哪一台机子上注册,就只能在哪一台机子上登陆这个倒也好说嘛,读他的mac地址呗
    伪装的话就读硬盘好了^_^
    这样做个病毒给他的了
      

  5.   

    建议转成HTML。其实跟PPT是一样的如果要用PPT直接打开,至少客户端还得有PowerPoint
      

  6.   

    只有转换这一条路,不可能能看不能下载。不下载怎么看?转换也只是降低其下载的意义罢了。让你的用户多买点光纤,给他们的用户人人装一个光纤,都远程通过光纤用肉眼看你放在机房里的ppt打印件。
    欢迎大家来我的博客作客:http://blog.csdn.net/aafshzj/
    我正在写一系列关于AAF组件框架的文章。该框架能对开发工作提供很多帮助,并极大地提高开发效率。希望大家看一看并提出宝贵建议。
      

  7.   

    也不一定的,可以采用js实现浏览器跳转,而去掉web服务器里面对.ppt的关联(避免它下载),这样就可以在线打开了,但是这样用户还能下载。
    可以更进一步,实现弹出窗口,屏蔽所有工具条、屏蔽右键菜单——很多在线播放的网站都是这么做的。
      

  8.   

    能想到的办法是:自己写个activex,首先下载PPT,放到内存中,然后读取并显示,为了防止用户直接下载,可以在下载时写一些特殊的HTTP头,服务器校验这些头信息,或者在输出文件流时插入一些字节,activex在读取时去掉这些字节,这样用户即使通过其他方式下载了打开也是乱码难度有点高的说
      

  9.   

    如果只能打开,不能下载,那么应该以html方式提供给客户端,
    我这里正在研究word读取,可以参考,
    ------------------------------
    <%@ Page language="c#" Codebehind="WordToHtml.aspx.cs" AutoEventWireup="false"
     Inherits="aspxWebcs.WordToHtml" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
      <HEAD>
        <title>WordToHtml</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
      </HEAD>
      <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
        </form>
      </body>
    </HTML>----------------------------------------
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using Office;namespace aspxWebcs
    {
    /// <summary>
    /// WordToHtml 的摘要说明。
    /// 首先要添加引用:Microsoft Word 9.0 Object Library
    /// </summary>
    public class WordToHtml : System.Web.UI.Page
    {
      private void Page_Load(object sender, System.EventArgs e)
      {
        // 在此处放置用户代码以初始化页面
        Word.ApplicationClass word = new Word.ApplicationClass();
        Type wordType = word.GetType();
        Word.Documents docs = word.Documents;    // 打开文件
        Type docsType = docs.GetType();
        object fileName = "d:\\tmp\\aaa.doc";
        Word.Document doc = (Word.Document)docsType.InvokeMember("Open", 
        System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] {fileName, true, true});
              
        // 转换格式,另存为
        Type docType = doc.GetType();
        object saveFileName = "d:\\tmp\\aaa.html";
        //下面是Microsoft Word 9 Object Library的写法,如果是10,可能写成:
        /*
        docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
         null, doc, new object[]{saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML});
        */
        ///其它格式:
        ///wdFormatHTML
        ///wdFormatDocument
        ///wdFormatDOSText
        ///wdFormatDOSTextLineBreaks
        ///wdFormatEncodedText
        ///wdFormatRTF
        ///wdFormatTemplate
        ///wdFormatText
        ///wdFormatTextLineBreaks
        ///wdFormatUnicodeText
        docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
         null, doc, new object[]{saveFileName, Word.WdSaveFormat.wdFormatHTML});    // 退出 Word
        wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod,
         null, word, null);
    }#region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }/// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregion
    }
    }
    ---------------------------