In some scenarios, it’s necessary to combine several documents content (for example, from documents stored in a database) into a single document and display the resulting content in ASPxRichEdit.
This example demonstrates how to merge several documents content by using the RichEditDocumentServer component, our non-visual document processing engine.
To open the resulting stream containing the document’s content in ASPxRichEdit, the Open(String, DocumentFormat, Func<Stream>) method is used.
View Example
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register assembly="DevExpress.Web.ASPxRichEdit.v__, Version=__, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxRichEdit" tagprefix="dx" %>
<%@ Register assembly="DevExpress.Web.v__, Version=__, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web" tagprefix="dx" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script>
function OnClick(s, e) {
re.PerformCallback();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr>
<td>
Document 1:
<dx:ASPxRichEdit ID="ASPxRichEdit2" runat="server" Width="500" Height="350" ReadOnly="true" WorkDirectory="~\App_Data\WorkDirectory">
<Settings>
<Behavior CreateNew="Hidden" Save="Hidden" Open="Hidden" SaveAs="Hidden" />
</Settings>
</dx:ASPxRichEdit>
</td>
<td>
Document 2:
<dx:ASPxRichEdit ID="ASPxRichEdit3" runat="server" Width="500" Height="350" ReadOnly="true" WorkDirectory="~\App_Data\WorkDirectory">
<Settings>
<Behavior CreateNew="Hidden" Save="Hidden" Open="Hidden" SaveAs="Hidden" />
</Settings>
</dx:ASPxRichEdit>
</td>
</tr>
</table>
<br />
<dx:ASPxButton ID="ASPxButton1" runat="server" Text="Merge documents content" AutoPostBack="false">
<ClientSideEvents Click="OnClick" />
</dx:ASPxButton>
<br />
<br />
<dx:ASPxRichEdit ID="ASPxRichEdit1" ClientInstanceName="re" runat="server" WorkDirectory="~\App_Data\WorkDirectory" OnCallback="ASPxRichEdit1_Callback">
<Settings>
<Behavior CreateNew="Hidden" Save="Hidden" Open="Hidden" SaveAs="Hidden" />
</Settings>
</dx:ASPxRichEdit>
</form>
</body>
</html>
using DevExpress.Web.Office;
using DevExpress.XtraRichEdit;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ASPxRichEdit2.Open(System.Web.HttpContext.Current.Server.MapPath("Doc 1.docx"));
ASPxRichEdit3.Open(System.Web.HttpContext.Current.Server.MapPath("Doc 2.docx"));
}
}
protected void ASPxRichEdit1_Callback(object sender, DevExpress.Web.CallbackEventArgsBase e)
{
DocumentManager.CloseDocument("testID");
MemoryStream stream = new MemoryStream();
RichEditDocumentServer server = new RichEditDocumentServer();
server.LoadDocument(System.Web.HttpContext.Current.Server.MapPath("Doc 1.docx"), DocumentFormat.OpenXml);
server.Document.AppendDocumentContent(System.Web.HttpContext.Current.Server.MapPath("Doc 2.docx"), DocumentFormat.OpenXml);
server.SaveDocument(stream, DocumentFormat.OpenXml);
stream.Position = 0;
ASPxRichEdit1.Open("testID", DevExpress.XtraRichEdit.DocumentFormat.OpenXml, () => { return stream; });
}
}
Imports Microsoft.VisualBasic
Imports DevExpress.Web.Office
Imports DevExpress.XtraRichEdit
Imports System
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Partial Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
If (Not IsPostBack) Then
ASPxRichEdit2.Open(System.Web.HttpContext.Current.Server.MapPath("Doc 1.docx"))
ASPxRichEdit3.Open(System.Web.HttpContext.Current.Server.MapPath("Doc 2.docx"))
End If
End Sub
Protected Sub ASPxRichEdit1_Callback(ByVal sender As Object, ByVal e As DevExpress.Web.CallbackEventArgsBase)
DocumentManager.CloseDocument("testID")
Dim stream As New MemoryStream()
Dim server As New RichEditDocumentServer()
server.LoadDocument(System.Web.HttpContext.Current.Server.MapPath("Doc 1.docx"), DocumentFormat.OpenXml)
server.Document.AppendDocumentContent(System.Web.HttpContext.Current.Server.MapPath("Doc 2.docx"), DocumentFormat.OpenXml)
server.SaveDocument(stream, DocumentFormat.OpenXml)
stream.Position = 0
ASPxRichEdit1.Open("testID", DevExpress.XtraRichEdit.DocumentFormat.OpenXml, Function() stream)
End Sub
End Class
<%@ Page Language="vb" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<%@ Register assembly="DevExpress.Web.ASPxRichEdit.v__, Version=__, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxRichEdit" tagprefix="dx" %>
<%@ Register assembly="DevExpress.Web.v__, Version=__, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web" tagprefix="dx" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script>
function OnClick(s, e) {
re.PerformCallback();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr>
<td>
Document 1:
<dx:ASPxRichEdit ID="ASPxRichEdit2" runat="server" Width="500" Height="350" ReadOnly="true" WorkDirectory="~\App_Data\WorkDirectory">
<Settings>
<Behavior CreateNew="Hidden" Save="Hidden" Open="Hidden" SaveAs="Hidden" />
</Settings>
</dx:ASPxRichEdit>
</td>
<td>
Document 2:
<dx:ASPxRichEdit ID="ASPxRichEdit3" runat="server" Width="500" Height="350" ReadOnly="true" WorkDirectory="~\App_Data\WorkDirectory">
<Settings>
<Behavior CreateNew="Hidden" Save="Hidden" Open="Hidden" SaveAs="Hidden" />
</Settings>
</dx:ASPxRichEdit>
</td>
</tr>
</table>
<br />
<dx:ASPxButton ID="ASPxButton1" runat="server" Text="Merge documents content" AutoPostBack="false">
<ClientSideEvents Click="OnClick" />
</dx:ASPxButton>
<br />
<br />
<dx:ASPxRichEdit ID="ASPxRichEdit1" ClientInstanceName="re" runat="server" WorkDirectory="~\App_Data\WorkDirectory" OnCallback="ASPxRichEdit1_Callback">
<Settings>
<Behavior CreateNew="Hidden" Save="Hidden" Open="Hidden" SaveAs="Hidden" />
</Settings>
</dx:ASPxRichEdit>
</form>
</body>
</html>