iTextSharp生成pdf

上文博客:https://www.cnblogs.com/jsll/p/11732907.html

安装+引用iTextSharp插件

基于iTextSharp插件实现pdf生成操作;

下载该组件并添加引用,使用NuGet来进行安装的,键项目选择管理NuGet程序包,
搜索iTextSharp选择合适版本安装即可,安装完成会自动添加引用。</p>

1.file_Path_Url路径下的图片删除不保留

2.生成的pdf为单页,一个图片对应一个pdf,pdf大小是A4纸大小,图片居中插入

using iTextSharp.text;
using iTextSharp.text.pdf;
using System;
using System.IO;
using System.Web;
using System.Web.Mvc;
  public void Get_Files()
        {
            try
            {
                var files = Request.Files;//得到前台ajax传过来的formData;;是个数组,基本单位是文件,可以不同类型
                for (int i = 0; i < files.Count; i++)
                {
                    var file = files[i];//数组;用indexof取
                    string RealName = Path.GetFileNameWithoutExtension(file.FileName)+"_"+DateTime.Now.ToFileTime();//filetime+获取文件名;不带后缀
                    string file_path = Server.MapPath("Picture_File_Centre");//设置存放路径
                    if (!Directory.Exists(file_path))
                    {
                        Directory.CreateDirectory(file_path);
                    }
                    var file_Path_Url = Path.Combine(file_path, Path.GetFileName(file.FileName));
                    file.SaveAs(file_Path_Url);//上传后保存文件
                                               //优点;实现多类型多文件上传
                                               //缺点:file_path内覆盖性写入,即上传文件与已有文件同名同类型时会覆写
                   var IsOk= PicsToPdf(file_Path_Url, RealName);
                    if (IsOk==1)
                    {
                        System.IO.File.Delete(file_Path_Url);file_Path_Url路径下的图片删除不保留
                        Response.Write(RealName);
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            
        }
        public int PicsToPdf(string file_Path_Url,string RealName)
        {
            try
            {
                Rectangle pageSize = new Rectangle(595, 842);
                Document document = new Document(pageSize, 0, 0, 0, 0);
                PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(Server.MapPath(@"\ToPdf\Pdf_File_Centre\" + RealName + ".pdf"), FileMode.Create));
                document.Open();
                Image img = Image.GetInstance(file_Path_Url);
                var h = img.Height;
                var w = img.Width;
                var R = 595 / w;//居中插入图片
                if (R * h > 842)//居中插入图片
                {
                    R = 842 / h;//居中插入图片
                }
                var h_ = (float)(842 - (R - 0.03) * h) / 2;//居中插入图片
                var w_ = (float)(595 - (R - 0.03) * w) / 2;//居中插入图片
                img.SetAbsolutePosition(w_, h_);//居中插入图片
                img.ScalePercent(R * 100 - 3);//居中插入图片
                writer.DirectContent.AddImage(img);//居中插入图片
                document.Close();
                writer.Close();
                return 1;
            }
            catch (Exception)
            {
                return 0;
                throw;
            }
        }

posted @ 2019-10-24 16:38  姜佳泉  阅读(774)  评论(0编辑  收藏  举报