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

原创 2016年08月31日 09:24:46
/// <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;
        }
版权声明:本文为 走错路的程序员 原创文章,欢迎转载。

C# 合并及拆分PDF文件

C# 合并及拆分PDF文件 有时我们可能会遇到下图这样一种情况 — 我们需要的资料或教程被分成了几部分存放在多个PDF文件中,不管是阅读还是保存都不是很方便,这时我们肯定想要把这些PDF文件合并为一个...
  • Eiceblue
  • Eiceblue
  • 2016年06月21日 17:12
  • 5577

今天学习C# Itext大一点收获!

protected void Page_Load(object sender, EventArgs e) { var doc1 = new Document...
  • ZXFC88
  • ZXFC88
  • 2012年04月24日 22:15
  • 3275

C# 输出pdf文件流在页面上显示

1 不调用itextsharp.dll的操作         ///         /// 生成pdf流         ///         ///         priv...
  • postfxj
  • postfxj
  • 2014年04月25日 14:42
  • 7717

C# iTextSharp 带书签合并多个PDF

private void MergePdfFilesWithBookMark(string[] sourcePdfs, string outputPdf) { PdfReade...
  • zuoyefeng1990
  • zuoyefeng1990
  • 2017年05月19日 09:07
  • 758

PDF文件拆页与文件合并Demo(C#)

  • 2016年03月08日 20:00
  • 546KB
  • 下载

iTextSharp 合并多个PDF文件

下载并且引用 iTextSharp.dll  引用命名空间: using System.Collections.Generic; using System.IO; using iTextSha...
  • u011010558
  • u011010558
  • 2013年12月13日 18:01
  • 3657

C#使用itextsharp生成PDF文件

前言 前段时间公司需要实现一个PDF文件下载功能,涉及到页眉页脚,段落,图片的生成。遂使用itextsharp来实现这一功能,但是itextsharp功能强大,类库繁多,特别是5.0版本后关于页眉页...
  • c79651760
  • c79651760
  • 2017年02月22日 10:20
  • 1476

itext合并两个PDF流

java使用itext合并pdf文件 转发 使用itext合并pdf文件很简单,首先需要创建要合并pdf文件的InputStream对象,然后调用MergePDF.concatPDF()静态方法。...
  • qq_32566703
  • qq_32566703
  • 2017年04月11日 19:25
  • 2301

C# 获取PDF文档的字体信息及指定文字的坐标,宽度和高度

在本篇文章中我将分享如何使用C#编程的方法来获取PDF文档中文字的字体信息(字体名称,大小,类型等)及指定文字的坐标(X,Y),宽度和高度...
  • Eiceblue
  • Eiceblue
  • 2016年11月11日 16:25
  • 2519

【C#功能实现】C# 输出pdf文件流在页面上显示

1 不调用itextsharp.dll的操作         ///         /// 生成pdf流         ///         ///         p...
  • xuqiang918
  • xuqiang918
  • 2014年02月17日 10:37
  • 4079
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iText C# 合并PDF文件流,以及A5变A4时内容默认放在最底下的问题的解决方法
举报原因:
原因补充:

(最多只允许输入30个字)