zoukankan      html  css  js  c++  java
  • itextsharp给pd添加logo、图片

            /// <summary>
            /// 添加图片、logo等 
            /// 引用组件itextsharp
            /// </summary>
            /// <param name="inputfilepath"></param>
            /// <param name="outputfiledir"></param>
            /// <param name="imgpath"></param>
            /// <param name="x"></param>
            /// <param name="y"></param>
            /// <param name="startNumber"></param>
            /// <param name="endNumber"></param>
            /// <returns></returns>
            private string AddPdfImage(string inputfilepath, string outputfiledir, string imgpath, int x, int y, int startNumber, int endNumber, int percent)
            {
    
                try
                {
                    using (PdfReader pdfReader = new PdfReader(inputfilepath))
                    {
                        var pagesNumber = pdfReader.NumberOfPages;
                        if (startNumber < pagesNumber && endNumber > pagesNumber)
                        {
                            endNumber = pagesNumber;
                        }
                        if (startNumber > pagesNumber || endNumber > pagesNumber)
                        {
                            throw new IndexOutOfRangeException("页码超出范围!");
                        }
    
                        var filename = Path.GetFileNameWithoutExtension(inputfilepath) + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
                        var outputfilepathtemp = Path.Combine(outputfiledir, filename);
    
                        using (PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepathtemp, FileMode.Create)))
                        {
                            using (Stream inputImageStream = new FileStream(imgpath, FileMode.Open, FileAccess.Read, FileShare.Read))
                            {
                                iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(inputImageStream);//获取图片
                                image.ScalePercent(percent);//设置图片缩放比例
                                for (int i = startNumber; i <= endNumber; i++)
                                {
                                    iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(i);
                                    float width = psize.Width;
                                    float height = psize.Height;
    
                                    float absoluteX = width * x / 100 - image.ScaledWidth;
                                    float absoluteY = height * y / 100 - image.ScaledHeight;
                                    if (absoluteX < 0)
                                    {
                                        absoluteX = 0;
                                    }
                                    if (absoluteY < 0)
                                    {
                                        absoluteY = 0;
                                    }
                                    image.SetAbsolutePosition(absoluteX, height - image.ScaledHeight - absoluteY);//设置图片的绝对位置
                                    var pdfContentByte = pdfStamper.GetOverContent(i);//获取内容
    
                                    pdfContentByte.AddImage(image);
                                }
                            }
                        }
    
                        return outputfilepathtemp;
                    }
    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
  • 相关阅读:
    [de2_tv] PAL制TV_VGA
    【转】NiosII中SDRAM相移计算
    VGA controller的代码分析
    TIOBE 2012年2月编程语言排行榜:C#力压C++
    ZendFramework入门2 使用布局
    转载 20个数据库设计最佳实践
    转载 20个很有用的CSS图形和图表技术和教程
    转载 10款实用的Ajax/JavaScript编码工具推荐
    转载 打造优秀Web设计的10项原则
    2012年1月编程语言排行榜:ObjectiveC成为年度语言
  • 原文地址:https://www.cnblogs.com/njcxwz/p/15637221.html
Copyright © 2011-2022 走看看