C#使用itextsharp对pdf文件进行分割的几种方法
来源:互联网 发布:织梦cms模板更改首页 编辑:程序博客网 时间:2024/05/21 22:53
using iTextSharp.text;
using iTextSharp.text.pdf;
using System;
namespace iTextTools {
public class PdfExtractorUtility {
} }
//方法一:从已有pdf中拷贝指定的页码范围到一个新的pdf文件中:
//1、使用pdfCopyProvider.AddPage()方法
public void ExtractPages(string sourcePdfPath,string outputPdfPath,int startPage,int endPage){
PdfReader reader = null;
Document sourceDocument = null;
PdfCopy pdfCopyProvider = null;
PdfImportedPage importedPage = null;
try {
reader = new PdfReader(sourcePdfPath);
sourceDocument = new Document(reader.GetPageSizeWithRotation(startPage)); pdfCopyProvider = new PdfCopy(sourceDocument,new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
sourceDocument.Open();
for (int i = startPage; i <= endPage; i++) {
importedPage = pdfCopyProvider.GetImportedPage(reader, i); pdfCopyProvider.AddPage(importedPage);
}
sourceDocument.Close();
reader.Close();
} catch (Exception ex) { throw ex; } }
2、使用 AddTemplate()方法
private void copypdf(int StartPage, int EndPage, string file1, string splitFileName)
//将file1中页码StartPage到EndPage的文件拷贝至splitFileName { iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(file1); Document document = new Document(reader.GetPageSizeWithRotation(StartPage));
//创建document对象
// string splitFileName = "D:\itextsharp_例子\split_pdf_ceshi4.pdf";
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(splitFileName, FileMode.Create)); //实例化document对象
document.Open();
int rotation;
PdfContentByte cb = writer.DirectContent;
PdfImportedPage page; // for (int i = 1; i <= startPage; i++) while (StartPage <= EndPage) {
document.SetPageSize(reader.GetPageSizeWithRotation(StartPage)); document.NewPage();
page = writer.GetImportedPage(reader, StartPage);
rotation = reader.GetPageRotation(StartPage);
if (rotation == 90 || rotation == 270) { //document.NewPage();
if (rotation == 90){
cb.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(StartPage).Height);
}
if (rotation == 270){
cb.AddTemplate(page, 0, 1.0F, -1.0F, 0, reader.GetPageSizeWithRotation(StartPage).Width, 0);
}
}else{
cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
}
StartPage++;
}
try{
document.Close();
reader = null;
}catch (Exception ex){
MessageBox.Show(ex.Message.ToString()); } }
二、将已有pdf文件中 不连续 的页拷贝至新的pdf文件中。其中需要拷贝的页码存于数组 int[] extractThesePages中
public void ExtractPages(string sourcePdfPath,string outputPdfPath, int[] extractThesePages) {
PdfReader reader = null;
Document sourceDocument = null;
PdfCopy pdfCopyProvider = null;
PdfImportedPage importedPage = null;
try {
reader = new PdfReader(sourcePdfPath);
sourceDocument = new Document(reader.GetPageSizeWithRotation(extractThesePages[0])); pdfCopyProvider = new PdfCopy(sourceDocument,new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
sourceDocument.Open();
foreach (int pageNumber in extractThesePages){
importedPage = pdfCopyProvider.GetImportedPage(reader, pageNumber); pdfCopyProvider.AddPage(importedPage); }
sourceDocument.Close();
reader.Close();
}catch (Exception ex){
throw ex;
}
}
using iTextSharp.text.pdf;
using System;
namespace iTextTools {
public class PdfExtractorUtility {
} }
//方法一:从已有pdf中拷贝指定的页码范围到一个新的pdf文件中:
//1、使用pdfCopyProvider.AddPage()方法
public void ExtractPages(string sourcePdfPath,string outputPdfPath,int startPage,int endPage){
PdfReader reader = null;
Document sourceDocument = null;
PdfCopy pdfCopyProvider = null;
PdfImportedPage importedPage = null;
try {
reader = new PdfReader(sourcePdfPath);
sourceDocument = new Document(reader.GetPageSizeWithRotation(startPage)); pdfCopyProvider = new PdfCopy(sourceDocument,new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
sourceDocument.Open();
for (int i = startPage; i <= endPage; i++) {
importedPage = pdfCopyProvider.GetImportedPage(reader, i); pdfCopyProvider.AddPage(importedPage);
}
sourceDocument.Close();
reader.Close();
} catch (Exception ex) { throw ex; } }
2、使用 AddTemplate()方法
private void copypdf(int StartPage, int EndPage, string file1, string splitFileName)
//将file1中页码StartPage到EndPage的文件拷贝至splitFileName { iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(file1); Document document = new Document(reader.GetPageSizeWithRotation(StartPage));
//创建document对象
// string splitFileName = "D:\itextsharp_例子\split_pdf_ceshi4.pdf";
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(splitFileName, FileMode.Create)); //实例化document对象
document.Open();
int rotation;
PdfContentByte cb = writer.DirectContent;
PdfImportedPage page; // for (int i = 1; i <= startPage; i++) while (StartPage <= EndPage) {
document.SetPageSize(reader.GetPageSizeWithRotation(StartPage)); document.NewPage();
page = writer.GetImportedPage(reader, StartPage);
rotation = reader.GetPageRotation(StartPage);
if (rotation == 90 || rotation == 270) { //document.NewPage();
if (rotation == 90){
cb.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(StartPage).Height);
}
if (rotation == 270){
cb.AddTemplate(page, 0, 1.0F, -1.0F, 0, reader.GetPageSizeWithRotation(StartPage).Width, 0);
}
}else{
cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
}
StartPage++;
}
try{
document.Close();
reader = null;
}catch (Exception ex){
MessageBox.Show(ex.Message.ToString()); } }
二、将已有pdf文件中 不连续 的页拷贝至新的pdf文件中。其中需要拷贝的页码存于数组 int[] extractThesePages中
public void ExtractPages(string sourcePdfPath,string outputPdfPath, int[] extractThesePages) {
PdfReader reader = null;
Document sourceDocument = null;
PdfCopy pdfCopyProvider = null;
PdfImportedPage importedPage = null;
try {
reader = new PdfReader(sourcePdfPath);
sourceDocument = new Document(reader.GetPageSizeWithRotation(extractThesePages[0])); pdfCopyProvider = new PdfCopy(sourceDocument,new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
sourceDocument.Open();
foreach (int pageNumber in extractThesePages){
importedPage = pdfCopyProvider.GetImportedPage(reader, pageNumber); pdfCopyProvider.AddPage(importedPage); }
sourceDocument.Close();
reader.Close();
}catch (Exception ex){
throw ex;
}
}
阅读全文
0 0
- C#使用itextsharp对pdf文件进行分割的几种方法
- C#使用itextsharp对pdf文件进行分割的几种方法
- C# 使用 itextsharp 对pdf文件进行分割的几种方法(1)——按页码拷贝分割
- C# 使用 itextsharp 对pdf文件进行分割的几种方法(1)——按页码拷贝分割
- C# 利用itextsharp对PDF文件加密
- C#使用itextsharp生成PDF文件
- C#使用itextsharp生成PDF文件
- c#使用iTextSharp填充PDF模版文件
- 简述c#中对字符串进行分割的几种方法
- C#使用iTextSharp打印PDF
- 如何对PDF文件进行分割
- 利用iTextSharp对PDF进行签名
- 利用iTextSharp对PDF进行签名
- c#调用itextsharp进行Pdf报表设计
- 将PDF文件进行分割拆分的方法
- C#利用iTextSharp 将jpg转换为pdf的方法
- C#中使用split分割字符串的几种方法
- C#中使用split分割字符串的几种方法
- JZOJ5453. 【NOIP2017提高A组冲刺11.5】好路线
- ASM 汇编
- Ubuntu 16.04 安装 uTorrent
- 2017年6月javaweb实训笔记
- 惯性滚动及引发的问题整理
- C#使用itextsharp对pdf文件进行分割的几种方法
- 基于SpringMVC登录模块验证码的生成与校验
- windows ping 不通虚拟机
- 三向城(NOIP模拟题)
- AJAX, SUCCESS没有反应???
- Java线程(七):AbstractExecutorService、CompletionService、ExecutorCompletionService
- 欢迎使用CSDN-markdown编辑器
- python最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- hdu 1892 See you~(二维树状数组)