走错路的程序员

记录日常心得

iText C# 合并PDF文件流,以及A5变A4时内容默认放在最底下的问题的解决方法
/// <summary> 合併PDF檔(集合) </summary>
        /// <param name="files">欲合併PDF檔之集合(一筆以上)</param> 
        /// <param name="pagesize">纸张大小</param>
        public static MemoryStream mergePDFStream(MemoryStream[] files, Rectangle pagesize = null)
        {
            //outMergeFile = Server.MapPath(outMergeFile);
            //if (outMergeFile == null)
            //{ 
            //    outMergeFile = "d:\\" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + new Random().Next(1000) + ".pdf";
            //} 
            PdfReader reader;
            Document document;
            if (pagesize == null)
            {
                pagesize = PageSize.A4;
            } 

            document = new Document(pagesize);
            //var fs = new FileStream(outMergeFile, FileMode.Create);
            MemoryStream fs = new MemoryStream();
            //BufferedStream bfs = new BufferedStream(fs);
            PdfWriter writer = PdfWriter.GetInstance(document, fs);
            writer.CloseStream = false; //不自动关闭内存流. 
            document.Open();

            PdfContentByte cb = writer.DirectContent;

            PdfImportedPage newPage;

            for (int i = 0; i < files.Length; i++)
            { 
            //这里的是,读取字节流
                reader = new PdfReader(files[i].ToArray());  
                int iPageNum = reader.NumberOfPages;

                for (int j = 1; j <= iPageNum; j++)
                {
                    document.NewPage();
                    newPage = writer.GetImportedPage(reader, j);
                    //cb.Add(newPage);
                    //cb.MoveTo(0, 0);
                    // PageSize.A4.Height - newPage.Height 解决itext 高度的问题. itext 的y 轴默认是从下面开始
                    cb.AddTemplate(newPage, 0, pagesize.Height - newPage.Height); 
                }

            }

            document.Close();

            byte[] fileBuffer = fs.GetBuffer();

            return fs;
        }
阅读更多
版权声明:本文为 走错路的程序员 原创文章,欢迎转载。 https://blog.csdn.net/phker/article/details/52381733
个人分类: net
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

iText C# 合并PDF文件流,以及A5变A4时内容默认放在最底下的问题的解决方法

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭