1.引用iTextSharp,用于拆分和合并pdf文件

using iTextSharp.text;
using iTextSharp.text.pdf;

2.合并pdf

 //outMergeFile是pdf文件合并后的输出路径
//lstFile里存放要进行合并的pdf文件的路径
public static void mergePDFFiles(string outMergeFile, List<string> lstFile)
{ if (!Sql.IsEmptyString(outMergeFile))
{
try
{
PdfReader reader;
Document document = new Document();
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(Server.MapPath(outMergeFile), FileMode.Create));
document.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage newPage;
for (int i = ; i < lstFile.Count; i++)
{
string newpath = lstFile[i];
reader = new PdfReader(newpath);
int iPageNum = reader.NumberOfPages;
int startPage = ;
int rotation;
while (startPage <= iPageNum)
{
document.SetPageSize(reader.GetPageSizeWithRotation(startPage));
document.NewPage();
newPage = writer.GetImportedPage(reader, startPage);
rotation = reader.GetPageRotation(startPage);//获取每一页pdf文件的rotation
                  //根据每一页的rotation重置宽高,否则都按首页宽高合并可能会造成信息丢失
if (rotation == )
{
cb.AddTemplate(newPage, , -1f, 1f, , , reader.GetPageSizeWithRotation(startPage).Height);
}
else if (rotation == )
{
cb.AddTemplate(newPage, -1f, , , -1f, reader.GetPageSizeWithRotation(startPage).Width, reader.GetPageSizeWithRotation(startPage).Height);
}
else if (rotation == )
{
cb.AddTemplate(newPage, , 1f, -1f, , reader.GetPageSizeWithRotation(startPage).Width, );
}
else
{
cb.AddTemplate(newPage, 1f, , , 1f, , );
}
startPage++;
}
}
document.Close();
}
catch (Exception ex)
{
outMergeFile = string.Empty;
SplendidError.SystemError(new StackTrace(true).GetFrame(), ex);
}
}
}

3.pdf拆分


注:              string[] sPages = sSplitText.Split(',');
List<int> list = new List<int>();
foreach (string val in sPages)
{
list.Add(Sql.ToInteger(val));
}
private void SplitPdf(byte[] imageCONTENT, string sImagePath, List<int> list)
{
PdfReader reader = new PdfReader(imageCONTENT);
FileStream outFileStream = new FileStream(sImagePath, FileMode.Create);
Document destinationDoc = null;
PdfCopy pdfCopy = null;
destinationDoc = new Document();
pdfCopy = new PdfCopy(destinationDoc, outFileStream);
destinationDoc.Open();
if (list.Count > )
{
int pageArrayIndex = ;
while (pageArrayIndex < list.Count)
{
destinationDoc.SetPageSize(reader.GetPageSizeWithRotation(list[pageArrayIndex]));
destinationDoc.NewPage();
pdfCopy.AddPage(pdfCopy.GetImportedPage(reader, list[pageArrayIndex]));
pageArrayIndex++;
}
}
destinationDoc.Close();
destinationDoc.Dispose();
destinationDoc = null;
}

pdf拆分与合并的更多相关文章

  1. PDF 拆分/合并

    不会真的有人会去下载那些广告免费,实则要收会员费的黑心软件来进行PDF的拆分合并吧??? 在下载两个均不能免费实现PDF自由拆分.合并,以及PDF打印方式会增加文件大小的情况下,一个合格的程序员肯定不 ...

  2. fasta文件拆分与合并

    Linux中fasta文件的拆分与合并 FASTA文件的拆分: (1)如果从一个文件a提取第11至20个序列存到另一个文件b: awk -v RS='>' 'NR>1{i++}i>= ...

  3. Goldengate进程的拆分与合并

    Goldengate的拆分与合并分类: ORACLE GoldenGate 2013-10-10 15:22 721人阅读 评论(0) 收藏 举报在使用Goldengate作为复制解决方案时,随着负载 ...

  4. C#文件的拆分与合并操作示例

    C#文件的拆分与合并操作示例代码. 全局变量定义 ;//文件大小 //拆分.合并的文件数 int count; FileInfo splitFile; string splitFliePath; Fi ...

  5. (Sql Server)数据的拆分和合并

    (Sql Server)数据的拆分和合并 背景: 今天遇到了数据合并和拆分的问题,尝试了几种写法.但大致可分为两类:一.原始写法.二.Sql Server 2005之后支持的写法.第一种写法复杂而且效 ...

  6. NDK学习笔记-文件的拆分与合并

    文件的拆分与合并在开发中经常会用到,上传或是下载的时候都有这样的运用 文件拆分的思路 将文件大小拆分为n个文件 那么,每个文件的大小就是等大小的 如果文件大小被n除不尽,那么就使用n+1个文件来拆分 ...

  7. spss-数据抽取-拆分与合并

    spss-数据抽取-拆分与合并 数据抽取也成为数据拆分,是指保留.抽取原数据表中某些字段.记录的部分信息,形成一个新字段.新纪录.分为:字段拆分和随机抽样两种方法. 一:字段拆分 如何提取" ...

  8. 【BIM】基于BIMFACE的空间拆分与合并

    BIMFACE中矩形空间拆分与合并 应用场景 在BIM运维场景中,空间同设备一样,作为一种资产被纳入运维管理体系,典型的应用场景例如商铺.防火分区等,这就涉及到空间的拆分和合并,在bimface中,已 ...

  9. fastq-to-fasta转换及fasta拆分、合并

    格式转换: use awk :awk 'BEGIN{P=1}{if(P==1||P==2){gsub(/^[@]/,">");print}; if(P==4)P=0; P++ ...

随机推荐

  1. iOS开发 iOS10推送必看(基础篇)

    iOS10更新之后,推送也是做了一些小小的修改,下面我就给大家仔细说说.希望看完我的这篇文章,对大家有所帮助.   原文链接   一.简单入门篇---看完就可以简单适配完了相对简单的推送证书以及环境的 ...

  2. PHP获取当前位置

    如果想动态的获取当前栏目所处的位置,就要关联到数据库,下面是例子: 栏目表(category): 涉及到二级目录. (1)首先在你的首页导航栏,还有首页所出现的链接后面,为栏目加上catid,就像这样 ...

  3. Spring MVC基础入门

    Spring MVC简介 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱 ...

  4. redis数据类型之—Set

    (1)set 简单介绍 set集合的数据是不重复的.无序的,一个集合类型键可以存储至多2^32-1 个字符串. (2)set 常用命令

  5. 源码解析-Volley(转自codeKK)

    Volley 源码解析 本文为 Android 开源项目源码解析 中 Volley 部分项目地址:Volley,分析的版本:35ce778,Demo 地址:Volley Demo分析者:grumoon ...

  6. mysql解压版安装

    1.下载MySQL解压版(32位) http://dev.mysql.com/downloads/mysql/

  7. Leetcode Anagrams

    Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...

  8. Android -- 启动另外一个Activity的方式(2s自动启动)

    1.  使用Handler  并且可以设置进入和退出的动画效果 Class < ? > activityClass; Class [ ] paramTypes = { Integer.TY ...

  9. 微信 winwre 移动调试

    如果 微信服务号无法连接 网络,关闭window 防火墙

  10. c# 反射事件

    被反射类中: public delegate void CompeletedHandler(); public static event CompeletedHandler AnalysisCompe ...