zoukankan      html  css  js  c++  java
  • 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(@"ToPdfPdf_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;
                }
            }
    
    
  • 相关阅读:
    Web中的图标(Sprites雪碧图、Icon Font字体图标)
    那些不推荐使用的html标签
    Vim学习
    web前端性能优化建议
    开发基础
    数据库事务
    java集合详解
    java基础总结大纲(一)
    java设计模式之单例模式(饿汉)
    java设计模式之单例模式(内部静态类)
  • 原文地址:https://www.cnblogs.com/jsll/p/11733062.html
Copyright © 2011-2022 走看看