【第22期】观点:IT 行业加班,到底有没有价值?

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;
        }
版权声明:本文为 走错路的程序员 原创文章,欢迎转载。 举报

相关文章推荐

一个PDF合并操作实现类,利用iTextSharp控件实现

http://blog.csdn.net/yinshuhai/article/details/3042702 using iTextSharp.text; using iTextSha...
  • plean
  • plean
  • 2013-04-28 14:47
  • 978

itext读写pdf的原理

之前介绍过使用ASM框架的一些基础api,里面会涉及.class的文件结构,字节码处理其实是修改.class文件的内容,关键内容在于对文件结构和字节码指令的了解 最近也阅读了些pdf相关的java框...

C# 串口操作系列(3) -- 协议篇,二进制协议数据解析

C# 串口操作系列(3) -- 协议篇,二进制协议数据解析 标签: c#bufferobject通讯byte硬件驱动 2010-05-27 09:54 51565人阅读 评论(215) 收...

C# 串口操作系列(4) -- 协议篇,文本协议数据解析

C# 串口操作系列(4) -- 协议篇,文本协议数据解析 分类: 通讯类库设计2010-06-09 01:50 9356人阅读 评论(26) 收藏 举报 c#uiobjectstr...

C#串口通信

本文主要是讲述如何通过C# .net1.1平台调用API操作串口,.net2.0已经内置串口操作类! 通常,在C#中实现串口通信,我们有四种方法: 第一:通过MSCOMM控件这是最简单的,最方便的方法...
  • byxdaz
  • byxdaz
  • 2011-09-04 23:40
  • 30172

【C#串口编程计划】通信协议解析 -- byte[]与常用类型的转换

刚刚完成一个串口通讯的系统。目前在把串口通信的代码整合到团队的类库中(把串口通信与网口Soket通讯整合起来,后面只需要配置参数,就可实现网络与串口通讯的转换),故C#串口编程计划的最后一篇图文“C#...

怎样增加、删除、合并PDF文件中的页面?

使用Adobe Acrobat。 Adobe中文官网http://www.adobe.com/cn/products/acrobat.html 可以自己下载破解版。

使用pdfBox合并pdf解决两种情况:

使用pdfBox合并pdf解决两种情况: 1 两个pdf合并成一个pdf 2 两个pdf两页合并为一个pdf一页

怎么把几个PDF文件按顺序合并到一起

有时候我们需要对一些PDF文档进行编辑修改,但是PDF格式文档不能像Word文档一样直接打开就能编辑,并且在页面内容的复制粘贴也没有那么方便。比如说我们想要合并若干个PDF文档该怎么办呢? ...

多个PDF文件合并为一个PDF文件

有时候有些PDF里面只有很少的页数内容,对于有些多个PDF需要归类到一个PDF上,就用到了PDF的合并。 下面是项目结构截图: 需要用的关键jar包是pdfbox.jar,这里选用的版本是1.8....
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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