Visa PPT PPTX i ASP.NET Core

Letar du efter en PowerPoint Viewer för att visa eller bädda in presentationer i din ASP.NET Core-webbapplikation? Om ja, fortsätt att läsa den här artikeln och lär dig hur du skapar en enkel ASP.NET Core PowerPoint Viewer och visar PPT/PPTX-presentationer med C#. Så låt oss börja.

Funktioner i ASP.NET PowerPoint Viewer

Vår ASP.NET PowerPoint Viewer kommer att använda Aspose.Slides for .NET API för att rendera presentationsbilderna som PNG-bilder. När bilderna har renderats visar vi dem med Bootstrap Carousel. Följande kommer att vara funktioner i applikationen:

  1. Bläddra och visa PowerPoint-presentationer (PPT/PPTX).
  2. Ställ in standard PowerPoint-fil som ska visas vid sidladdning.
  3. Skjutreglage för att navigera mellan bilderna.

Steg för att skapa PowerPoint Viewer i ASP.NET Core

Följande är några enkla steg för att skapa en PowerPoint Viewer i ASP.NET Core.

  1. Skapa en ny ASP.NET Core Web Application i Visual Studio.
Skapa ASP.NET PowerPoint Viewer
  1. Öppna NuGet Package Manager och installera paketet Aspose.Slides for .NET.
ASP.NET PowerPoint-bildspel
  1. Skapa Presentations- och Slides-mappar i wwwroot för att behålla PowerPoint-filerna respektive de renderade bilderna.
PowerPoint-bildspel i ASP.NET
  1. Skapa en ny mapp med namnet “Hjälpare” i rotmappen.

  2. Skapa en ny klass med namnet “Slide” i mappen “Helpers” för att lagra presentationsbildernas information.

public class Slide
{
	public int SlideNumber { get; set; }
	public string Path { get; set; }
}
  1. Öppna “HomeController.cs” och ersätt dess kod med följande (Uppdatera standard PowerPoint-filens namn i Index-åtgärden).
public class HomeController : Controller
{
	public List<Helper.Slide> slides;
	public IHostingEnvironment _env;
	public HomeController(IHostingEnvironment env)
	{
		_env = env;
	}
	[HttpGet]
	public ActionResult Index(string fileName)
	{
		slides = new List<Helper.Slide>();
		if (fileName == null)
		{
			// Visa standard PowerPoint-fil vid sidladdning
			slides = RenderPresentationAsImage("presentation.pptx");
		}
		else
		{
			slides = RenderPresentationAsImage(fileName);
		}

		return View(slides);
	}
	public List<Helper.Slide> RenderPresentationAsImage(string FileName)
	{
		var webRoot = _env.WebRootPath;
		// Ladda PowerPoint-presentationen
		Presentation presentation = new Presentation(Path.Combine(webRoot, "Presentations", FileName));
		var slides = new List<Helper.Slide>();

		string imagePath = "";
		// Spara och visa presentationsbilder
		for (int j = 0; j < presentation.Slides.Count; j++)
		{
			ISlide sld = presentation.Slides[j];
			Bitmap bmp = sld.GetThumbnail(1f, 1f);
			imagePath = Path.Combine(webRoot, "Slides", string.Format("slide_{0}.png", j));
			bmp.Save(imagePath, System.Drawing.Imaging.ImageFormat.Png);
			// Lägg till i listan
			slides.Add(new Helper.Slide { SlideNumber = j, Path = string.Format("slide_{0}.png", j) });
		}

		return slides;
	}
}
  1. Öppna Views/Home/index.cshtml och ersätt dess innehåll med följande.
@{
    ViewData["Title"] = "PowerPoint Viewer";
}
@{
    Layout = null;
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Slides Viewer</title>
    <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
    <link rel="stylesheet" href="~/css/site.css" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
    <div class="container">
        <nav class="navbar navbar-inverse navbar-fixed-top">
            <div class="container">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                        <span class="sr-only">Toggle navigation</span>
                    </button>
                    <a asp-area="" asp-controller="Home" asp-action="Index" class="navbar-brand">PowerPoint Viewer</a>
                </div>
                <div class="navbar-collapse collapse">
                    <ul class="nav navbar-nav">
                        <li style="cursor: pointer;"><a data-toggle="modal" data-target="#exampleModal">Browse</a></li>
                    </ul>
                </div>
            </div>
        </nav>
        <br />
        <div id="myCarousel" class="carousel slide" data-interval="false">
            <div class="carousel-inner" role="listbox" style="width:100%; height: auto !important;">
                @for (int i = 0; i < Model.Count; i++)
                {
                    if (i == 0)
                    {
                        <div class="item active">
                            <img src="~/Slides/@Model[i].Path" style="width: 80%; height: auto; margin:auto !important" class="img-responsive " />
                            <p style="text-align:center;">
                                <strong> @(Model[i].SlideNumber + 1)/@Model.Count</strong>
                            </p>
                        </div>
                    }
                    else
                    {
                        <div class="item">
                            <img src="~/Slides/@Model[i].Path" style="width: 80%; height: auto; margin:auto !important" class="img-responsive " />
                            <p style="text-align:center;">
                                <strong> @(Model[i].SlideNumber + 1)/@Model.Count</strong>
                            </p>
                        </div>
                    }
                }
            </div>
            <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
                <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
                <span class="sr-only">Previous</span>
            </a>
            <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
                <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
                <span class="sr-only">Next</span>
            </a>
        </div>

    </div>
    <!-- Modal -->
    <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="exampleModalLabel">Select a file</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    <div class="list-group">
                        @foreach (string file in System.IO.Directory.EnumerateFiles("wwwroot/Presentations","*"))
                        {
                            string fileName = System.IO.Path.GetFileName(file);
                            @Html.ActionLink(fileName, "Index", "Home", new { fileName = fileName }, new { @class = "list-group-item" })
                        } 
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                </div>
            </div>
        </div>
    </div>

    <script src="~/lib/jquery/dist/jquery.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>

    <script src="~/js/site.min.js" asp-append-version="true"></script>
</body>
</html>
  1. Bygg programmet och kör det i din favoritwebbläsare.
PowerPoint Viewer i ASP.NET Core

Se även

Skaffa en tillfällig licens för Aspose.Slides för .NET

Du kan skaffa den tillfälliga licensen av Aspose.Slides för .NET för att undvika testbegränsningar.

Tips: Du kanske vill kolla in en liveimplementering av visningsoperationer för presentationer.