使用itextSharp创建PDF,并插入图片功能

 string topPath = HttpContext.Current.Server.MapPath("~/ReportFile/LabelOutPut/");
string responsefileName = string.Format("{0}.pdf", fileName);
            string pdfsavePath = string.Format(topPath + responsefileName);
            var document = new iTextSharp.text.Document(new iTextSharp.text.Rectangle(283.0F, 425.0F), 0, 0, 0, 0);
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(pdfsavePath, FileMode.Create));
            document.Open();

            PdfContentByte cb = writer.DirectContent;
            PdfImportedPage page;
            int rotation;
            ////读取图片
            //for (int j = 0; j < imageList.Length; j++)
            //{

            //    iTextSharp.text.Image mm = iTextSharp.text.Image.GetInstance(imageList[j]);
            //    //设置图片的位置
            //    mm.SetAbsolutePosition(50 + j, 50 + j);
            //    //设置图片的大小
            //    mm.ScaleAbsolute(50 + j, 50 + j);
            //}

            int i = 0;

            //循环要修改的PDF的页数
            while (i < imgs.Length)
            {

                //将拷贝过来的内容添加到模板上
                document.SetPageSize(new iTextSharp.text.Rectangle(283.0F, 425.0F));
                document.NewPage();
                //page = writer.GetImportedPage(reader, i);
                //rotation = 0;
                //if (rotation == 90 || rotation == 270)
                //{
                //    cb.AddTemplate(page, 0, -1f, 1f, 0, 0, 100);
                //}
                //else
                //{
                //    cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
                //}

                //在PDF第一页上面加上签名档


                iTextSharp.text.Image mm;
                PdfContentByte cb1 = writer.DirectContent;
                //创建一个新的模板,设置模板的大小
                PdfTemplate template1 = cb.CreateTemplate(425.0F, 283.0F);


                //mm = iTextSharp.text.Image.GetInstance(imageList[i]);
                var bytes = Convert.FromBase64String(imgs[i]);
                mm = iTextSharp.text.Image.GetInstance(bytes);
                //设置图片的位置
                //mm.SetAbsolutePosition(50, -10);
                mm.SetAbsolutePosition(0, 0);
                //设置图片的大小
                //mm.ScaleAbsolute(60, 60);

                mm.ScaleAbsolute(425, 283);

                template1.AddImage(mm);

                //设置添加模板的位置
                //cb1.AddTemplate(template1, 90, 50);
                cb1.AddTemplate(template1, 0, -1f, 1f, 0, 0, 425.0F);
                i++;
            }


            document.Close();
            writer.Close();

C#中,`iTextSharp`是一个非常流行的用于创建和操作PDF文档的库。要向现有的PDF文件中插入图片或是在新建的PDF文件里添加图片,你需要遵循以下步骤: ### 1. 安装 iTextSharp 首先确保已安装了`iTextSharp`库,你可以通过NuGet包管理器来安装它,在Visual Studio中的Nuget软件包管理控制台输入命令: ``` Install-Package itext7 ``` > 注意:这里提到的是 `itext7`, 因为原始的 `iTextSharp` 已经停止更新,而 `itext7` 是它的后续版本支持 .NET Core 和 .NET Framework。 ### 2. 引入命名空间 接着,在代码顶部引入必要的命名空间以便使用其提供的功能: ```csharp using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element; using System.IO; ``` ### 3. 插入图像到 PDF 中 下面是具体的例子展示了如何加载一张本地磁盘上的图像且将其放置在一个新的或是既有的PDF文档当中: #### 新建一个包含图片PDF 文件 示例: ```csharp // 创建一个新的 PDF 文档 string dest = "output.pdf"; PdfWriter writer = new PdfWriter(dest); PdfDocument pdfDoc = new PdfDocument(writer); Document document = new Document(pdfDoc); // 添加图像至页面 Stream imgStream = File.OpenRead("path/to/your/image.png"); ImageData imageData = ImageDataFactory.Create(imgStream); Image image = new Image(imageData); document.Add(image); // 将图像加入到文档中 // 关闭所有资源 imgStream.Close(); document.Close(); Console.WriteLine($"带有图片的新 PDF 成功保存到了 {dest}"); ``` #### 向已有 PDF 文件中追加一页带图片 页面 示例: ```csharp // 打开现有 PDF 准备写入模式 string src = "existing_file.pdf"; // 存放源 PDF 的路径 string dest = "new_output_with_image.pdf"; PdfReader reader = new PdfReader(src); PdfWriter writer = new PdfWriter(dest); PdfDocument pdfDoc = new PdfDocument(reader, writer); Document document = new Document(pdfDoc); int numberOfPages = pdfDoc.GetNumberOfPages(); // 在原有基础上增加新页码,图片置于该新增页面上 pdfDoc.AddNewPage(numberOfPages + 1); document.SetMargins(0, 0, 0, 0).ShowTextAligned(new Paragraph(), "", 595 / 2f - 86 / 2f, 842 / 2f - 121 / 2f, pdfDoc.GetPage(numberOfPages+1), TextAlignment.CENTER, VerticalAlignment.MIDDLE); Stream imgStream = File.OpenRead("path/to/your/image.jpg"); // 替换为你自己的图片位置 ImageData data = ImageDataFactory.Create(imgStream); Image pic = new Image(data); pic.ScaleToFit(500, 500); // 根据需要调整大小 document.ShowTextAligned(pic, "", 0, 0, pdfDoc.GetPage(numberOfPages+1)); // 清理工作完成后的收尾任务 imgStream.Close(); document.Close(); Console.WriteLine($"成功地把图片嵌入到了 {src}."); ``` 请注意上述示例仅作为基础用法展示,在实际项目中可能还需要根据具体需求做相应调整(例如设置图像的位置、尺寸等)。此外,记得处理好异常情况以及释放占用的相关资源。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值