Как просмотреть файлы doc, docx, pdf с помощью C# и .NET
Здравствуйте Члены Клуба,
Надеюсь, у вас все хорошо!!
Может ли кто-нибудь помочь мне в предварительном просмотре документов doc,docx и PDF с помощью ASP.NET и C#.
Вот я и добавил код.
Что я уже пробовал:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="LoadingWordDocument.aspx.cs" Inherits="WordDocumentLoadSampleWebApp.LoadingWordDocument" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript"> function doHighlight(DivText, searchTerm, highlightStartTag, highlightEndTag) { debugger; if ((!highlightStartTag) || (!highlightEndTag)) { highlightStartTag = "<font style='color:blue; background-color:yellow;'>"; highlightEndTag = "</font>"; } var newText = ""; var i = -1; var lcSearchTerm = searchTerm.toLowerCase(); var lcDivText = DivText.toLowerCase(); while (DivText.length > 0) { i = lcDivText.indexOf(lcSearchTerm, i + 1); if (i < 0) { newText += DivText; DivText = ""; } else { if (DivText.lastIndexOf(">", i) >= DivText.lastIndexOf("<", i)) { if (lcDivText.lastIndexOf("/script>", i) >= lcDivText.lastIndexOf("<script", i)) { newText += DivText.substring(0, i) + highlightStartTag + DivText.substr(i, searchTerm.length) + highlightEndTag; DivText = DivText.substr(i + searchTerm.length); lcDivText = DivText.toLowerCase(); i = -1; } } } } return newText; } function highlightSearchTerms(searchText, divId, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag) { debugger; if (treatAsPhrase) { searchArray = [searchText]; } else { searchArray = searchText.split(" "); } var div=document.getElementById(divId); if (!div || typeof (div.innerHTML) == "undefined") { if (warnOnFailure) { alert("Sorry, for some reason the text of this page is unavailable. Searching will not work."); } return false; } var DivText = div.innerHTML; for (var i = 0; i < searchArray.length; i++) { DivText = doHighlight(DivText, searchArray[i], highlightStartTag, highlightEndTag); } div.innerHTML = DivText; return true; } function searchPrompt(defaultSearchText, divId, isPrompt, treatAsPhrase, textColor, bgColor) { debugger; if ((!textColor) || (!bgColor)) { highlightStartTag = ""; highlightEndTag = ""; } else { highlightStartTag = "<font style='color:" + textColor + "; background-color:" + bgColor + ";'>"; highlightEndTag = "</font>"; } return highlightSearchTerms(searchTxt.value, divId, false, true, highlightStartTag, highlightEndTag); } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="btnUpload" runat="server" Text="submit" OnClick="btnUpload_Click" /> <div></div> </div> <div> <asp:TextBox ID="searchTxt" runat="server" Width="300px" Height="25px" Font-Size="Medium"></asp:TextBox> <input type="button" value="Search" onclick="return searchPrompt('search text', 'dvWord', false, true, 'red', 'orange')" /> </div> <div id="dvWord" runat="server"></div> </form> </body> </html> CS file <pre>using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Microsoft.Office.Interop.Word; using System.IO; using System.Text.RegularExpressions; namespace WordDocumentLoadSampleWebApp { public partial class LoadingWordDocument : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnUpload_Click(object sender, EventArgs e) { object documentFormat = 8; string randomName = DateTime.Now.Ticks.ToString(); object htmlFilePath = Server.MapPath("~/Temp/") + randomName + ".htm"; string directoryPath = Server.MapPath("~/Temp/") + randomName + "_files"; object fileSavePath = Server.MapPath("~/Temp/") + Path.GetFileName(FileUpload1.PostedFile.FileName); //If Directory not present, create it. if (!Directory.Exists(Server.MapPath("~/Temp/"))) { Directory.CreateDirectory(Server.MapPath("~/Temp/")); } //Upload the word document and save to Temp folder. FileUpload1.PostedFile.SaveAs(fileSavePath.ToString()); //Open the word document in background. _Application applicationclass = new Application(); applicationclass.Documents.Open(ref fileSavePath); applicationclass.Visible = false; Document document = applicationclass.ActiveDocument; //Save the word document as HTML file. document.SaveAs(ref htmlFilePath, ref documentFormat); //Close the word document. document.Close(); //Read the saved Html File. string wordHTML = System.IO.File.ReadAllText(htmlFilePath.ToString()); //Loop and replace the Image Path. foreach (Match match in Regex.Matches(wordHTML, "<v:imagedata.+?src=[\"'](.+?)[\"'].*?>", RegexOptions.IgnoreCase)) { wordHTML = Regex.Replace(wordHTML, match.Groups[1].Value, "Temp/" + match.Groups[1].Value); } dvWord.InnerHtml = wordHTML; } } }
Richard Deeming
Рекомендации по автоматизации работы офиса на стороне сервера[^]
В настоящее время корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и/или взаимоблокировку при запуске Office в этой среде.
Richard Deeming
Помимо того, что ваш код почти наверняка не будет работать, вы на самом деле не задали вопрос.