C# iText split PDF C# 拆分PDF
Nuget install iText7
using iText.Kernel.Pdf;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using iText.Kernel.Utils;
using iText.Kernel.Pdf;
using System.IO;
using System.Web.UI;
using System.Windows.Forms; class Program
{
static void Main(string[] args)
{
UltimateITextSplitPDF();
Console.ReadLine();
} static void UltimateITextSplitPDF()
{
string rawPdfFile = @"D:\C\C\ConsoleApp1\EJATT.pdf";
Program objProvider = new Program();
objProvider.PDFSplitExample(rawPdfFile);
} void PDFSplitExample(string rawPdfFile)
{
if(!File.Exists(rawPdfFile))
{
return;
}
MCSPdfSplitter mcsPdfSplitterProvider;
//Generated physical split pdf files by GetNextPdfWriter of MCSPdfSplitter
using (var pdfDoc = new PdfDocument(new PdfReader(rawPdfFile)))
{
mcsPdfSplitterProvider = new MCSPdfSplitter(pdfDoc, rawPdfFile);
var splitPdfDocs = mcsPdfSplitterProvider.SplitByPageCount();
foreach (var splitPDF in splitPdfDocs)
{
splitPDF.Close();
}
} mcsPdfSplitterProvider.SplitPdfNamesList.ForEach(x =>
{
if (File.Exists(x))
{
byte[] pdfByte = File.ReadAllBytes(x);
Console.WriteLine($"Before delete,Name {x},length {pdfByte.Length}");
File.Delete(x);
}
});
}
}
using iText.Kernel.Utils;
using System;
using System.Collections.Generic;
namespace ConsoleApp1
{
public class MCSPdfSplitter : PdfSplitter
{
private int _pageNumber;
private string _rawPdfFile;
public List<string> SplitPdfNamesList = new List<string>();
public MCSPdfSplitter(PdfDocument pdfDocument, string rawPdfFile) : base(pdfDocument)
{
_rawPdfFile = rawPdfFile;
}
protected override PdfWriter GetNextPdfWriter(PageRange documentPageRange)
{
_pageNumber++;
string splitPDFFileName = _rawPdfFile.Substring(0,_rawPdfFile.LastIndexOf(".pdf"))+ _pageNumber+"split" + Guid.NewGuid().ToString().Replace("-", "") + ".pdf";
SplitPdfNamesList.Add(splitPDFFileName);
return new PdfWriter(splitPDFFileName);
}
}
}
C# iText split PDF C# 拆分PDF的更多相关文章
- C# 合并及拆分PDF文件
C# 合并及拆分PDF文件 有时我们可能会遇到下图这样一种情况 — 我们需要的资料或教程被分成了几部分存放在多个PDF文件中,不管是阅读还是保存都不是很方便,这时我们肯定想要把这些PDF文件合并为一个 ...
- Java 合并、拆分PDF文档
处理PDF文档时,我们可以通过合并的方式,来任意组几个不同的PDF文件或者通过拆分将一个文件分解成多个子文件,这样的好处是对文档的存储.管理很方便.下面将通过Java程序代码介绍具体的PDF合并.拆分 ...
- [.NET开发] C# 合并、拆分PDF文档
在整理文件时,将多个同类型文档合并是实现文档归类的有效方法,也便于文档管理或者文档传输.当然,也可以对一些比较大的文件进行拆分来获取自己想要的部分文档.可以任意地对文档进行合并.拆分无疑为我们了提供极 ...
- C# 合并和拆分PDF文件
一.合并和拆分PDF文件的方式 PDF文件使用了工业标准的压缩算法,易于传输与储存.它还是页独立的,一个PDF文件包含一个或多个"页",可以单独处理各页,特别适合多处理器系统的工作 ...
- 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】
iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...
- 如何把PDF文件拆分为多个文件
一个PDF文件有很多个PDF页面组成,有时候我们只需要单个页面的时候应该怎么做呢,这个时候就需要拆分PDF文件了,那么如何把 PDF文件拆分为多个文件呢,应该有很多的小伙伴都想知道吧,那就让我们一起来 ...
- itext A4纸张横向创建PDF
import java.awt.Color;import java.io.FileOutputStream;import java.io.IOException; import com.lowagie ...
- Java iText+FreeMarker生成PDF(HTML转PDF)
1.背景 在某些业务场景中,需要提供相关的电子凭证,比如网银/支付宝中转账的电子回单,签约的电子合同等.方便用户查看,下载,打印.目前常用的解决方案是,把相关数据信息,生成对应的pdf文件返回给用户. ...
- 基于iTextSharp的PDF操作(PDF打印,PDF下载)
基于iTextSharp的PDF操作(PDF打印,PDF下载) 准备 1. iTextSharp的简介 iTextSharp是一个移植于java平台的iText项目,被封装成c#的组件来用于C#生成P ...
随机推荐
- ASP.NET Core框架深度学习(四)宿主对象
11.WebHost 第六个对象 到目前为止我们已经知道了由一个服务器和多个中间件构成的管道是如何完整针对请求的监听.接收.处理和最终响应的,接下来来讨论这样的管道是如何被构建出来的.管道是在作为应 ...
- Linux软件安装——服务管理
Linux软件安装——服务管理 摘要:本文主要学习了Linux中有关服务管理的知识. 什么是服务 服务一般是放置在后台运行的一个或多个进分程,为用户或系统提供某项特定的服务,有些是系统服务,有些则是独 ...
- Java自学-I/O 数据流
Java 数据流DataInputStream ,DataOutputStream DataInputStream 数据输入流 DataOutputStream 数据输出流 步骤 1 : 直接进行字符 ...
- 解决pip使用异常No module named 'pip'
场景 在使用pip进行升级时 python install --upgrade named pip 时提示: No module named pip 注: 博客: https://blog.csdn. ...
- python3 FastDFS 配置文件 客户端连接 删除文件 bug
文件传输使用FastDFS 很方便, 不管是大小文件, 用默认的配置就可以, 这里插入一个配置文件 : (后补python连接FastDFS上传下载文件) # connect timeout in ...
- UITableView总结
.协议介绍 UITableViewDataSource() UITableViewDelegate(常用) .刷新 下拉刷新: 上拉刷新 .搜索 .重用 自定义cell 不使用重用方法 注册Cell ...
- NDK简介
一.NDK简介: C/C++的动态库.Dalvik通过JNI编程方式调用C/C++代码. NDK编程提高软件性能,加密保护APK文件 ndk-build NDK编译生成脚本 Java编译 ...
- 实时数据推送webSocket
实时数据推送 在Web或移动项目中,服务器向客户端实时推送消息是一种常见的业务需求. 实现方式 Polling:轮询(俗称“拉”),即定期重新请求数据. Long-Polling:长轮询,是 Poll ...
- 通过Thrift实现C#与Hbase交流
近期着手的一个项目需要将我方数据存储到Hadoop的大数据环境,由于本人是.net平台的开发者,没有怎么接触过大数据(因为他实在是太高大尚了).但还好baidu, google后,还是很找到了解决办法 ...
- 使用ML.NET进行自定义机器学习
ML.NET是Microsoft最近发布的用于机器学习的开源,跨平台,代码优先的框架.尽管对我们来说是一个新的框架,但该框架的根源是Microsoft Research,并且在过去十年中已被许多内部团 ...