ASP.NET MVC Kelime Düzenleyicisi

Aspose.Words for .NET, çok sayıda .NET uygulamasında MS Word belgelerini işlemek ve dönüştürmek için eksiksiz bir özellik seti sağlar. Özellikle, masaüstü veya web uygulamalarında yeni Word belgeleri oluşturabilir veya mevcut Word belgelerini düzenleyebilirsiniz. Bu yazıda, size Aspose.Words for .NET’in Kelime işleme yeteneklerinden nasıl yararlanacağınızı ve ASP.NET MVC’de web tabanlı bir MS Word Düzenleyiciyi nasıl oluşturacağınızı göstereceğim.

ASP.NET MVC Word Editor - Word Belgeleri Oluşturun

Belgelerin içeriğini yazmak ve güncellemek için bir WYSIWYG HTML düzenleyicisini temel alacak bir ASP.NET MVC Word Düzenleyicisi oluşturacağız. Ayrıca Aspose.Words for .NET, Word belgesinin içeriğini HTML’ye dönüştürmek ve güncellenmiş içerikten Word belgeleri oluşturmak için kullanılacaktır.

ASP.NET MVC’de MS Word Düzenleyicisi Oluşturma Adımları

Gösterim için, bu uygulamada JavaScript tabanlı Suneditor WYSIWYG editörünü kullandım. Aynısını kullanabilir veya gereksinimlerinize uyan başka bir HTML düzenleyiciyi seçebilirsiniz. ASP.NET Word Düzenleyicisi oluşturmak için adımlar aşağıdadır.

  • İlk olarak, Visual Studio’da yeni bir ASP.NET Core Web Uygulaması oluşturun.
  • Web Uygulaması (Model-View-Controller) şablonunu seçin.
  • WYSIWYG editörünün dosyalarını indirin ve wwwroot dizininde tutun.
  • NuGet Paket Yöneticisi’ni açın ve Aspose.Words for .NET paketini kurun.
  • Aşağıdaki betiği index.cshtml görünümüne ekleyin.
@{
    ViewData["Title"] = "Word Editor in ASP.NET";
}
<div class="row">
    <div class="col-md-12">
        <form asp-controller="Home" asp-action="UploadFile" method="post" class="form-inline"
              enctype="multipart/form-data">
            <br />
            <div class="form-group">
                <input type="file" name="file" accept=".doc, .docx" class="form-control custom-file-input" />
            </div>
            <div class="form-group">
                <button type="submit" class="form-control btn btn-primary">Open</button>
            </div>
            <div class="form-group" style="position:relative; float :right">
                <button type="button" id="download" class="form-control btn btn-success" value="Save and Download">Save and Download</button>
            </div>
        </form>
        <br />
        <form method="post" asp-action="Index" id="formDownload">
            <textarea name="editor" id="editor" rows="80" cols="100">
                @if (ViewBag.HtmlContent == null)
                 {
                    <p>Write something or open an existing Word document. </p>
                 }
                 else
                 {
                     @ViewBag.HtmlContent;
                 }
                </textarea>
        </form>
    </div>
</div>
<!-- suneditor -->
<link href="~/suneditor/dist/css/suneditor.min.css" rel="stylesheet">
<!-- suneditor -->
<script src="~/suneditor/dist/suneditor.min.js"></script>
<script>
    var suneditor = SUNEDITOR.create('editor', {
        display: 'block',
        width: '100%',
        height: '30%',
        popupDisplay: 'full',
        buttonList: [
            ['font', 'fontSize', 'formatBlock'],
            ['paragraphStyle', 'blockquote'],
            ['bold', 'underline', 'align', 'strike', 'subscript', 'superscript', 'horizontalRule', 'list'],
            ['table', 'link', 'image'],
            ['align', 'horizontalRule', 'list', 'lineHeight'],
            ['codeView']
        ],
        placeholder: 'Start typing something...'
    });
</script>
<script>
    $(document).ready(function () {
        $("#download").click(function () {
            suneditor.save();
            $("#formDownload").submit();
        });
    });
</script>
  • HomeController.cs denetleyicisinde aşağıdaki yöntemleri ekleyin.
[HttpPost]
public FileResult Index(string editor)
{
	try
	{
		// Benzersiz bir dosya adı oluşturun
		string fileName = Guid.NewGuid() + ".docx";
		// HTML metnini bayt dizisine dönüştürün
		byte[] byteArray = Encoding.UTF8.GetBytes(editor.Contains("<html>") ? editor : "<html>" + editor + "</html>");
		// HTML'den Word belgesi oluştur
		MemoryStream stream = new MemoryStream(byteArray);
		Document Document = new Document(stream);
		// Word dosyası için bellek akışı oluştur
		var outputStream = new MemoryStream();
		Document.Save(outputStream, SaveFormat.Docx);
		outputStream.Position = 0;
		// Oluşturulan Word dosyasını döndür
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Rtf, fileName);
	}
	catch (Exception exp)
	{
		return null;
	}
}
[HttpPost]
public ViewResult UploadFile(IFormFile file)
{
	// Dosya yolunu ayarla
	var path = Path.Combine("wwwroot/uploads", file.FileName);
	using (var stream = new FileStream(path, FileMode.Create))
	{
		file.CopyTo(stream);
	}
	// Word belgesini yükle
	Document doc = new Document(path);
	var outStream = new MemoryStream();
	// HTML seçeneklerini ayarla
	HtmlSaveOptions opt = new HtmlSaveOptions();
	opt.ExportImagesAsBase64 = true;
	opt.ExportFontsAsBase64 = true; 
	// Word belgesini HTML'ye dönüştürün
	doc.Save(outStream, opt);
	// Akıştan metin oku
	outStream.Position = 0;
	using(StreamReader reader = new StreamReader(outStream))
	{
		ViewBag.HtmlContent = reader.ReadToEnd();
	}
	return View("Index");
}
  • Son olarak, uygulamayı favori tarayıcınızda oluşturun ve çalıştırın.

Demo

Aşağıda, ASP.NET Word Editor’da Word belgelerinin nasıl oluşturulacağı veya düzenleneceğinin gösterimi yer almaktadır.

ASP.NET’te bir Word Belgesi oluşturun

ASP.NET’te bir Word Belgesini Düzenleme

Kaynak Kodunu İndir

MS Word Editor kaynak kodunu buradan indirebilirsiniz.

Çözüm

Bu yazıda, ASP.NET’te MS Word belgelerinin nasıl oluşturulacağını öğrendiniz. Kod örnekleriyle birlikte adım adım kılavuz, ASP.NET MVC’de basit bir web tabanlı MS Word düzenleyicisinin nasıl oluşturulacağını göstermiştir. Ayrıca, aşağıdaki kaynakları kullanarak Aspose.Words for .NET hakkında daha fazlasını keşfedebilirsiniz.

Aspose.Words for .NET’i Ücretsiz Deneyin

Geçici lisans talep ederek Aspose.Words for .NET’i ücretsiz olarak deneyebilirsiniz.

İlgili Makaleler