how to edit or update pdf file using c#

 how to edit or update pdf file using c#


first we need to install plugin of nuget
"Spire.Pdf"




1).Create Model Classes

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace EncriptionDecription.Models
{
    public class PDFModel
    {
        public HttpPostedFileBase ImageFile { set; get; }
        public int CompanyID { set; get; }
    }
    public class Company{
        public int ID { set; get; }
        public string Name { set; get; }
        public string Url { set; get; }
        public string Logo { set; get; }
    }
}




2).Create Controller 

using EncriptionDecription.Models;
using Spire.Pdf;
using Spire.Pdf.General.Find;
using Spire.Pdf.Graphics;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Web.Mvc;

namespace EncriptionDecription.Controllers
{
    public class PDFController : Controller
    {
        public List<Company> Companies = new List<Company>();
        public  PDFController()
        {
            Companies.Add(new Company
            {
                ID=1,Name="Tritex",Url="Tritexsolutions.com",Logo="LogoTritex"
            });
            Companies.Add(new Company
            {
                ID = 2,
                Name = "Nextgen",
                Url = "Nextgen.com",
                Logo = "LogoNextgen"
            });
        }

        public ActionResult Index()
        {
            ViewBag.myfile = "";
            TempData["Companies"] = this.Companies;
            return View();
        }

        [HttpPost]
        public ActionResult Index(PDFModel pdfmodel)
        {
            TempData["Companies"] = this.Companies;
            string rootpath= @"C:\Users\rituraj.vaishanav\source\repos\EncriptionDecription\EncriptionDecription\Files\";
            Spire.Pdf.PdfDocument pdfDoc = new Spire.Pdf.PdfDocument();
            pdfDoc.LoadFromFile(rootpath + pdfmodel.ImageFile.FileName);
            var pages = pdfDoc.Pages;
            foreach (PdfPageBase page in pages)
            {
                PdfTextFindCollection CompanyLogo = page.FindText("<CompanyLogo></CompanyLogo>", TextFindParameter.IgnoreCase);
                PdfTextFindCollection CompanyName = page.FindText("<CompanyName></CompanyName>", TextFindParameter.IgnoreCase);
                PdfTextFindCollection pdfsharptext = page.FindText("Evaluation Warning : The document was created with Spire.PDF for .NET.", TextFindParameter.IgnoreCase);
                var company = this.Companies.Find(x => x.ID == pdfmodel.CompanyID);
                String logoText = company.Logo;
                String nameText = company.Url;
                //Creates a brush
                PdfBrush brush = new PdfSolidBrush(Color.DarkBlue);
                //Defines a font
                PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 12f, FontStyle.Regular));
                RectangleF rec;
                foreach (PdfTextFind find in CompanyLogo.Finds)
                {
                    rec = find.Bounds;
                    page.Canvas.DrawRectangle(PdfBrushes.White, rec);
                    page.Canvas.DrawString(logoText, font, brush, rec);
                }
                foreach (PdfTextFind find in CompanyName.Finds)
                {
                    rec = find.Bounds;
                    page.Canvas.DrawRectangle(PdfBrushes.White, rec);
                    page.Canvas.DrawString(nameText, font, brush, rec);
                }

                foreach (PdfTextFind find in pdfsharptext.Finds)
                {
                    rec = find.Bounds;
                    page.Canvas.DrawRectangle(PdfBrushes.White, rec);
                    page.Canvas.DrawString("", font, brush, rec);
                }
                //
            }
            var filename = rootpath + "new" + Guid.NewGuid() + ".pdf";
            pdfDoc.SaveToFile(filename);
            ViewBag.myfile = filename;
            return View();
        }
}




3).Create HTML

@using EncriptionDecription.Models;
@{
    ViewBag.Title = "Index";
}

<div class="row">
    <div class="col-md-8 col-md-offset-2">
        @using (Html.BeginForm("Index", "PDF", FormMethod.Post, new { enctype = "multipart/form-data" }))
        {
            <div class="row">
                <div class="col-md-6">
                    <input type="file" name="ImageFile" required />
                </div>
                <div class="col-md-6">
                    <select name="CompanyID">
                        @foreach (var company in (List<Company>)TempData["Companies"])
                        {
                        <option value="@company.ID">@company.Name</option>
                        }
                    </select>
                    <input type="submit" value="Create" class="btn btn-default" />
                </div>
            </div>
            if (ViewBag.myfile != "")
            {
                <a href="@ViewBag.myfile">download file</a>;
            }
        }

    </div>
</div>









No comments:

Post a Comment

Thank You For Your Great Contribution

Featured Post

how to find n number of nodes have child or cildren

 how to find n number of nodes have child or cildren for that we use recursive function  const   data = {     'id' : '0' ,...

Popular Posts