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# Itext大一点收获!

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

iText操作PDF学习(四)

下面,我们在上面例子的基础上给 pdf 来点背景颜色,边框,外边距 新建新建类ColoriText--------在main方法中编写以下代码: //定义一个A4大小的矩形组件 Rectan...

用C#制作PDF文件全攻略

PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如何制作PDF格式文件的资料非常少,在网上搜来搜去,都转贴的是同一段“暴力”破解的方法,代码片断如下...

iText导出PDF经典实现

上篇文章我们借助POI导出了EXCEL格式的文件,这次我们换另一种格式PDF,那么,用什么开源组件呢?呵呵,听说iText不错,我们就用iText吧。 首先我们来了解下iText: 简单地说,iTex...

用C#制作PDF文件全攻略

前    前言丽水市汽车运输集团有限公司信息中心 苟安廷PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如何制作PDF格式文件的资料非常少,在网上搜...
  • gatr
  • gatr
  • 2005-02-02 17:01
  • 21710

C#使用itextsharp生成PDF文件

项目需求需要生成一个PDF文档,使用的是VS2010,ASP.NET。 网络上多次搜索没有自己想要的,于是硬着头皮到itextpdf官网看英文文档,按时完成任务,以实用为主,共享一下: 使用HTML文...

asp.net使用itextsharp.dll类库导出pdf文件

很久没有发文章了,是因为现在做技术比较少了,开始转型做管理,不过还是有一些小问题需要我来处理,在项目中原来都是主要导出execl文件,而现在要求导出pdf文件。 后来找了找资料做了个例子和大家分享。...

C# 将多个office文件转换及合并为一个PDF文件

PDF文件介绍PDF(Portable Document Format )文件源于20世纪90年代初期,如今早已成为了一种最流行的的文件格式之一。因为PDF文件有很多优点: 支持跨平台和跨设备共享 可...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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