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;
}
}