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