翼度科技»论坛 编程开发 .net 查看内容

C# 图片转PDF,PDF增加水印文字

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
  好久没写博客了,今天给大家分享一个图片转PDF的相关操作,也算是一次总结吧。
  首先需要准备动态库itextsharp.dll,这个dll去网上下载,都可以下载到,C#对PDF的操作都是基于这个类库来实现的。话不多说,直接上代码。
  1.         /// <summary>
  2.         /// 导出PDF
  3.         /// </summary>
  4.         /// <param name="FilePath">图片的路劲</param>
  5.                 /// <param name="FileName">图片的名称</param>
  6.         private bool PrintToPdf(string FilePath,string FileName )
  7.         {                       
  8.             iTextSharp.text.Rectangle rec = new iTextSharp.text.Rectangle(0, 0, iTextSharp.text.PageSize.A4.Width, iTextSharp.text.PageSize.A4.Height);
  9.             iTextSharp.text.Image image;
  10.             iTextSharp.text.Document document = null;
  11.             FileStream fs = null;
  12.             PdfWriter writer = null;
  13.             try
  14.             {
  15.                 //生成PDF
  16.                 document = new iTextSharp.text.Document(rec);
  17.                 fs = new FileStream(FilePath + FileName + ".pdf", FileMode.Create);
  18.                 PdfWriter.GetInstance(document, fs);
  19.                 document.Open();
  20.                 image = iTextSharp.text.Image.GetInstance(FilePath + FileName + ".jpg");
  21.                 //调整图片大小,使之适合A4
  22.                 if (image.Height > rec.Height)
  23.                 {
  24.                     image.ScaleToFit(rec.Width, rec.Height);
  25.                 }
  26.                 else if (image.Width > rec.Width)
  27.                 {
  28.                     image.ScaleToFit(rec.Width, rec.Height);
  29.                 }
  30.                 //调整图片位置,使之居中
  31.                 image.Alignment = iTextSharp.text.Image.ALIGN_MIDDLE;
  32.                 document.NewPage();
  33.                 document.Add(image);
  34.             }
  35.             catch (Exception ex)
  36.             {
  37.                 return false;
  38.             }
  39.             finally
  40.             {
  41.                 if (document.IsOpen())
  42.                 {
  43.                     document.Close();
  44.                 }
  45.                 fs.Close();
  46.                 //最后删除生成的图片
  47.                 File.Delete(FilePath + FileName + ".jpg");
  48.             }
  49.             try
  50.             {
  51.                 //添加水印图片,水印图片采取的是先生成图片,再添加到PDF文件中
  52.                 document = new iTextSharp.text.Document(rec);
  53.                 fs = new FileStream(FilePath + FileName + ".pdf", FileMode.Open);
  54.                 writer = PdfWriter.GetInstance(document, fs);
  55.                 iTextSharp.text.Image imgWater = CreateWaterImage();
  56.                 PdfReader reader = new PdfReader(fs);
  57.                 document.Open();
  58.                 PdfContentByte cb = writer.DirectContent;
  59.                 PdfImportedPage newPage;
  60.                 int iPageNum = reader.NumberOfPages;
  61.                 for (int j = 1; j <= iPageNum; j++)
  62.                 {
  63.                     document.NewPage();
  64.                     newPage = writer.GetImportedPage(reader, j);
  65.                     //pdf旋转
  66.                     if (newPage.Width > newPage.Height)
  67.                     {
  68.                         cb.AddTemplate(newPage, 0, -1f, 1f, 0, 0, newPage.Width);
  69.                     }
  70.                     else
  71.                     {
  72.                         cb.AddTemplate(newPage, 0, 0);
  73.                     }
  74.                     cb.AddImage(imgWater);
  75.                 }
  76.                 return true;
  77.             }
  78.             catch (Exception ex)
  79.             {
  80.                 return false;
  81.             }
  82.             finally
  83.             {
  84.                 if (document.IsOpen())
  85.                 {
  86.                     document.Close();
  87.                 }
  88.                 writer.Close();
  89.                 fs.Close();
  90.             }
  91.         }
  92.         /// <summary>
  93.         /// 生成水印图片
  94.         /// </summary>
  95.         /// <returns></returns>
  96.         private iTextSharp.text.Image CreateWaterImage()
  97.         {
  98.             string WaterText = "水印文本";
  99.             Bitmap bitmap = new Bitmap(595, 842);
  100.             using (Graphics g = Graphics.FromImage(bitmap))
  101.             {
  102.                 //重置图像
  103.                 g.ResetTransform();
  104.                 //设置旋转中心
  105.                 g.TranslateTransform(bitmap.Width / 2, bitmap.Height / 2);
  106.                 //旋转50度 顺时针
  107.                 g.RotateTransform(-50);
  108.                 //指定文本呈现的质量 解决文字锯齿问题
  109.                 g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
  110.                 System.Drawing.Font font = new System.Drawing.Font("微软雅黑", 14);
  111.                 SolidBrush solidBrush = new SolidBrush(Color.FromArgb(100, 0, 0, 0));
  112.                 //设置文字、字体、大小、颜色、起始位置
  113.                 g.DrawString(WaterText, font, solidBrush, new Point(-240, -100));
  114.                 g.DrawString(WaterText, font, solidBrush, new Point(-340, 100));
  115.             }
  116.                        
  117.                         //把水印图片保存在系统指定位置
  118.             bitmap.Save("C:\\WaterTemp.jpg");
  119.             iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance("C:\\WaterTemp.jpg");
  120.             //透明度,灰色填充
  121.             image.GrayFill = 20;
  122.             image.SetAbsolutePosition(0, 0);
  123.             return image;
  124.         }
复制代码
  

来源:https://www.cnblogs.com/zhenzaizai/archive/2023/06/21/17496661.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具