首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

Web 端瀏覽 Visio 圖紙:Visio Viewer ActiveX 整合實作指南

     編輯:關於C#

透過 Microsoft 免費提供的 Visio Viewer ActiveX 控制項,可在瀏覽器中直接檢視儲存於資料庫的 Visio 二進制圖檔。本文完整示範 ASP.NET 整合架構:主頁面嵌入 ActiveX、動態串流輸出 .vsd 檔案、客戶端自動安裝引導。

整體架構

  1. 列表頁:提供「檢視圖紙」連結,帶圖檔 ID 導向容器頁。
  2. 容器頁:嵌入 <object classid="clsid:279D6C9A-652E-4833-BEFC-312CA8887857">,透過 JavaScript 動態設定 SRC 指向串流頁。
  3. 串流頁:從資料庫讀取二進制圖檔,設定 ContentType = "application/vnd.ms-visio.viewer" 直接輸出至 Response.OutputStream。

容器頁關鍵 HTML


<object id="Viewer1" 
    classid="clsid:279D6C9A-652E-4833-BEFC-312CA8887857"
    codebase="https://example.com/VisioViewer2003.exe"
    width="100%" height="100%" viewastext>
  <param name="SRC" value="">
  <param name="ToolbarVisible" value="-1">
  <param name="PageTabsVisible" value="-1">
  <param name="HighQualityRender" value="-1">
  <param name="BackColor" value="16777200">
  <param name="PageColor" value="16777215">
  <param name="AlertsEnabled" value="-1">
  <param name="ContextMenuEnabled" value="-1">
</object>
<div align="right" style="font-size:x-small">
  如無法顯示,請 <a href="VisioViewer2003.exe">下載安裝 Visio Viewer</a>
</div>

容器頁後端:動態指定 SRC


protected void Page_Load(object sender, EventArgs e) {
    string visioId = Request.QueryString["VisioID"];
    if (!string.IsNullOrEmpty(visioId)) {
        string script = $@"";
        ClientScript.RegisterStartupScript(typeof(string), "loadvisio", script);
    }
}

串流輸出頁


private void Page_Load(object sender, EventArgs e) {
    string visioId = Request.QueryString["VisioID"];
    if (visioId != null) {
        using (IDataReader dr = visioDAL.GetByVisioID(visioId)) {
            if (dr.Read()) {
                byte[] visioBytes = (byte[])dr["visioImage"];
                OutputVisioFile(visioBytes);
            }
        }
    }
}

private void OutputVisioFile(byte[] fileBytes) {
    Response.ContentType = "application/vnd.ms-visio.viewer";
    Response.OutputStream.Write(fileBytes, 0, fileBytes.Length);
    Response.Flush();
    Response.End();
}

部署注意事項

  • 客戶端需安裝 Visio Viewer(2003/2007/2010/2013/2016 均可),codebase 屬性可指向安裝包實現自動下載提示。
  • IE 需允許 ActiveX 控制項執行(信任站點設定)。
  • 大型圖檔建議啟用 IIS 動態壓縮或分頁載入優化。

此方案零客戶端安裝 Visio 完整版即可實現 Web 端圖紙瀏覽,適合 B/S 架構的圖形管理系統。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved