Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >分享免费PDF工具(个人C#编程作品,免费使用)

分享免费PDF工具(个人C#编程作品,免费使用)

作者头像
哆哆Excel
发布于 2024-04-10 02:40:22
发布于 2024-04-10 02:40:22
48170
代码可运行
举报
文章被收录于专栏:哆哆Excel哆哆Excel
运行总次数:0
代码可运行

免费PDF工具v1.0(个人C#编程作品,免费使用)

一、功能:

功能就是要解决的问题

1.PDF合并:批量合并多个PDF文件为一个文件2.PDF拆分:批量拆分多个PDF文件,按x页/文档的方式拆分,重新命名3.PDF提取:把一个PDF文件拆解为,一个为x-y页文件,一个为other文件

二、图文展示

1.合并

2.拆分

3.提取

三、部分代码

1.合并代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
       //执行合并Button
        private void button3_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBox1.Text))
            {
                MessageBox.Show("没设置输出文件");
                return;
            }
            string outputFileName = textBox1.Text;
            // 创建一个新的PDF文档,用于合并
            using (PdfDocument mergedDocument = new PdfDocument())
            {
                // 遍历ListBox中的PDF文件列表
                foreach (string pdfFile in listBox1.Items)
                {
                    // 读取每个PDF文件
                    PdfDocument inputDocument = PdfReader.Open(pdfFile, PdfDocumentOpenMode.Import);

                    // 将每个PDF文档的页面添加到合并后的文档中
                    foreach (PdfPage page in inputDocument.Pages)
                    {
                        mergedDocument.AddPage(page);
                    }

                    // 关闭输入文档
                    inputDocument.Close();
                }
                // 保存合并后的PDF文件到指定目录
                mergedDocument.Save(outputFileName);
            }
            MessageBox.Show("PDF文件合并完成,并已保存到 " + outputFileName);
        }

2.拆分代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//PDF拆分---执行拆分
        private void button8_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBox2.Text))
            {
                return;
            }
            string outputDirectory = textBox2.Text;
            // 确保输出目录存在
            if (!Directory.Exists(outputDirectory))
            {
                Directory.CreateDirectory(outputDirectory);
            }
            
            // 指定每个PDF文件需要拆分的页数
            int pagesPerDocument =(int)numericUpDown1.Value; // 例如,每个文档拆分为5页
            //int pagesPerDocument = 5; // 例如,每个文档拆分为5页

            // 遍历ListBox中的所有PDF文件
            foreach (string pdfFile in listBox2.Items)
            {
                
                // if (!(pdfFile is string filePath)) continue; // 确保ListBox中的所有项都是字符串类型的文件路径

                // 读取PDF文件
                using (PdfDocument document = PdfReader.Open(pdfFile, PdfDocumentOpenMode.Import))
                {
                    int pageCount = document.PageCount;
                    int pagesCopied = 0;

                    // 计算需要拆分的次数
                    int splitsNeeded = (pageCount + pagesPerDocument - 1) / pagesPerDocument;

                    for (int i = 0; i < splitsNeeded; i++)
                    {
                        //MessageBox.Show(pdfFile + "" + i.ToString());
                        int startPage = i * pagesPerDocument + 1;
                        int endPage = Math.Min(startPage + pagesPerDocument - 1, pageCount);
                        // 创建一个新的PDF文档用于保存这些页面
                        using (PdfDocument singlePageDocument = new PdfDocument())
                        {
                            for (int j = startPage; j <= endPage; j++)
                            {
                                PdfPage page = document.Pages[j-1];
                                singlePageDocument.AddPage(page);
                                pagesCopied++;
                            }
                            string outputFilePath = Path.Combine(outputDirectory, $"{Path.GetFileNameWithoutExtension(pdfFile)}_{startPage}-{endPage}.pdf");
                            singlePageDocument.Save(outputFilePath);
                        }
                        //输出进度或状态信息MessageBox.Show($"从 {filePath} 拆分了 {pagesCopied} 页并保存为 {outputFilePath}");
                    }
                }



            }
            MessageBox.Show("所有PDF文件的拆分已完成。");
        }

3.提取代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 //pdf提取---执行提取
        private void button11_Click(object sender, EventArgs e)
        {
            int x = (int)numericUpDown2.Value;
            int y= (int)numericUpDown3.Value;
            string inputFilePath = textBox3.Text;
            string outputDirectory = textBox4.Text;
            // 确保输出目录存在
            if (!Directory.Exists(outputDirectory))
            {
                Directory.CreateDirectory(outputDirectory);
            }
            string outputFilePath1 = Path.Combine(outputDirectory, $"{Path.GetFileNameWithoutExtension(inputFilePath)}_{x}-{y}.pdf");
            string outputFilePath2 = Path.Combine(outputDirectory, $"{Path.GetFileNameWithoutExtension(inputFilePath)}_other.pdf");
            ExtractPages(inputFilePath, x, y, outputFilePath1);
            SaveRemainingPages(inputFilePath, x, y, outputFilePath2);
            MessageBox.Show("完成", "提示");
        }

4.部分函数方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//提取PDF文件中x-y页面(存为一个新的文件)
        public static void ExtractPages(string inputFilePath, int startPage, int endPage, string outputFilePath)
        {
            // 打开PDF文件
            using (PdfDocument document = PdfReader.Open(inputFilePath, PdfDocumentOpenMode.Import))
            {
                // 检查指定的页码是否有效
                if (startPage < 1 || endPage > document.PageCount)
                {
                    throw new ArgumentException("指定的页码范围超出了PDF文档的范围。");
                }

                // 创建一个新的PDF文档用于存放提取的页面
                PdfDocument newDocument = new PdfDocument();

                // 将指定范围内的页面添加到新的PDF文档中
                for (int i = startPage - 1; i <= endPage - 1; i++)
                {
                    PdfPage originalPage = document.Pages[i];
                    newDocument.AddPage(originalPage);
                }

                // 保存新的PDF文档到指定的输出文件路径
                newDocument.Save(outputFilePath);
            }
        }
        //提取PDF文件中x-y页面(余下部分存为另一个新的文件)
        public static void SaveRemainingPages(string inputFilePath, int x, int y, string outputFilePath)
        {
            // 打开PDF文件
            using (PdfDocument document = PdfReader.Open(inputFilePath, PdfDocumentOpenMode.Import))
            {
                // 创建一个新的PDF文档用于存放剩余的页面
                PdfDocument newDocument = new PdfDocument();

                // 遍历文档中的所有页面
                for (int i = 0; i < document.PageCount; i++)
                {
                    // 如果页面不在提取的范围内,则添加到新的PDF文档中
                    if (i < x - 1 || i > y - 1)
                    {
                        PdfPage originalPage = document.Pages[i];
                        newDocument.AddPage(originalPage);
                    }
                }

                // 保存新的PDF文档到指定的输出文件路径
                newDocument.Save(outputFilePath);
            }
        }

四、下载链接

关注,回复文字: PDF

记得分享给你的朋友,大家一起免费使用

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 哆哆Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
7 条评论
热度
最新
PDF
PDF
回复回复点赞举报
PDF
PDF
回复回复点赞举报
PDF
PDF
回复回复点赞举报
PDF
PDF
回复回复点赞举报
PDF
PDF
回复回复点赞举报
PDF
PDF
回复回复点赞举报
PDF
PDF
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
C#实战:基于iTextSharp实现PDF加密功能
大家日常办公中有时候为了文档资料的安全需要对文档进行加密,尤其是针对PDF文档这个场景还是非常广泛的。今天给大家分享使用C#来实现PDF文档加密功能。并且功能基于Winform窗体程序可以直接运行,感兴趣的朋友可以体验一下!
小明互联网技术分享社区
2025/07/27
1610
C#实战:基于iTextSharp实现PDF加密功能
在C#中,PDFsharp库使用(二):PDF拆分
PDFsharp 是一个流行的 C# 库,用于创建和处理 PDF 文档。它提供了一套丰富的 API,允许你以编程方式生成、编辑和渲染 PDF 文件
哆哆Excel
2024/04/18
1.6K0
在C#中,PDFsharp库使用(二):PDF拆分
在C#中,PDFsharp库使用(三):PDF提取
private void button9_Click(object sender, EventArgs e)
哆哆Excel
2024/04/18
1.8K0
在C#中,PDFsharp库使用(三):PDF提取
PDF Kit 使用示例(HarmonyOS)
说起PDF,开发时总绕不开。最早做PDF相关功能,是帮同事搞个合同预览,结果一头雾水,踩了不少坑。后来用多了,发现HarmonyOS的PDF Kit其实挺顺手,能编辑、能预览、还能加批注,基本上开发需求都能覆盖。
用户2116160
2025/06/28
1040
PDF Kit 使用示例(HarmonyOS)
如何实现高性能的在线 PDF 预览
最近接到产品需求,用户需要在我们的站点上在线查看 PDF 文件,并且查看时,用户可以对 PDF 文件的进行旋转、缩放、跳转到指定页码等操作。
政采云前端团队
2020/06/04
6.9K0
如何实现高性能的在线 PDF 预览
C# 实战指南:使用 iText7 高效处理 PDF 文件
在开发中,处理 PDF 文件是一个常见的需求,例如生成报告、填充表单、设置权限或签名等。iText7 是一个功能强大的 PDF 操作库,支持多种 PDF 操作,包括表单填充、加密、数字签名、分割与合并等。
郑子铭
2025/06/07
2300
C# 实战指南:使用 iText7 高效处理 PDF 文件
Python 深入浅出 – PyPDF2 处理 PDF 文件
实际应用中,可能会涉及处理 pdf 文件,PyPDF2 就是这样一个库,使用它可以轻松的处理 pdf 文件,它提供了读,割,合并,文件转换等多种操作。
全栈程序员站长
2022/09/10
1.9K0
Python 深入浅出 – PyPDF2 处理 PDF 文件
C# 将 Word 转化分享为电子期刊
1、由编辑人员使用 Microsoft Word 编辑期刊内容,上传到系统,生成PDF文件。
初九之潜龙勿用
2024/06/20
2050
C# 将 Word 转化分享为电子期刊
C# WinForm 界面控件
1.首先插入新的子窗体form1,并设置IsMdiContainer = True 属性。
王 瑞
2022/12/28
3.5K0
C# WinForm 界面控件
PyPDF2的使用「建议收藏」
pdf使用Adobe公司开发,现在由国际标准化组织ISO进行维护。PDF合成包含链接和按钮,表单字段,音频,视频和业务逻辑
全栈程序员站长
2022/09/10
1.2K0
CSharp中文档转换为PDF或图片不依赖WPS或Office
https://gitee.com/psvmc/document-converter.git
码客说
2023/04/27
1.1K0
利用腾讯云轻量应用服务器构建后端API,轻松打造PDF转Word的小程序工具
大家日常工作当中有时候需要把Excel转换为pdf打印或者转换为图片进行分享,目前有许多在线工具,不过大部分都是需要看激励广告或者收费才可以正常使用,今天给大家分享通过微信小程序自己搭建一个Excel转换工具,随时随地使用免受付费或者看广告的困扰,感兴趣的朋友可以一起来了解一下!
小明互联网技术分享社区
2024/11/22
3680
利用腾讯云轻量应用服务器构建后端API,轻松打造PDF转Word的小程序工具
【工具教程】批量提取PDF电子票据内容给PDF重命名或将区域内容导出表格,超简单
在企业和财务部门中,处理大量的电子票据(如发票、收据等)是一项繁琐且耗时的任务。为了提高效率,自动化处理这些票据变得尤为重要。本项目旨在开发一个基于C#的应用程序,能够批量提取PDF电子票据中的关键信息(如发票编号、日期、金额等),并根据这些信息对PDF文件进行重命名,或将提取的区域内容导出为结构化的表格(如Excel文件)。这将大大减少人工操作,提高数据处理的准确性和效率。
不负众望
2025/04/05
2870
【工具教程】批量提取PDF电子票据内容给PDF重命名或将区域内容导出表格,超简单
C# iText 7 切分PDF,处理PDF页面大小
我要使用itext做一个pdf的页面大小一致性处理,然后再根据数据切分出需要的pdf.
SpringSun
2022/04/28
1.5K0
C#  iText 7 切分PDF,处理PDF页面大小
C# 用 iTextSharp 将 PDF 转成文本
using System; using System.IO; using iTextSharp.text; using iTextSharp.text.pdf; using iTextSharp.text.pdf.parser; public class ParsingPDF { static string PDF; static string TEXT2; /** * Parses the PDF using PRTokeniser * @param src the path to the or
用户8671053
2021/11/02
1.7K0
三大神器助力Python提取pdf文档信息
今天这篇文章是今年最后一篇文章了,因此也是一篇非常有用的技术文章,你可以现在只了解一下并进行收藏,等你需要用到的时候再拿出来看一看,这样就好了。
啃饼思录
2019/02/26
21.1K0
VB.NET 拆分、合并PDF工具(PDF批量打印)
答:因现在网上99%以上的PDF合并工具都是需要收费,或者要使用收费的破J版,或者是一些网页的在线服务不能上传和合并大批量的文件(这也涉及到文件的安全性)所以想着自己弄一个.
办公魔盒
2021/02/05
1.8K0
VB.NET 拆分、合并PDF工具(PDF批量打印)
掌握C#技能:PDF转图片轻松搞定
今天给大家分享一下如何通过C#实现pdf转图片的案例,有需要的朋友可以看一下,大家如果有问题可以互相交流学习!
小明互联网技术分享社区
2024/01/18
1.4K0
掌握C#技能:PDF转图片轻松搞定
C# 文件操作系列一
在.Net环境中,所有关于文件操作的类都在System.IO命名空间下,注:在修改文件时,安全性显得格外重要,但是本随笔不过多讲述安全性,这里假设我们有足够的权限。 1、管理文件系统 先通过一幅图来了
郑小超.
2018/01/26
1.1K0
如何将PDF按页进行拆分,然后提取PDF区域内容改名或保存表格?基于iText.Kernel.Pdf 解决方案
随着数字化办公的普及,PDF文件因其固定格式和跨平台兼容性被广泛应用于文档传输和存档。然而,多页PDF文件在管理和处理时可能带来不便,特别是需要提取特定区域的内容进行进一步的分析或存档。
不负众望
2025/03/26
3030
如何将PDF按页进行拆分,然后提取PDF区域内容改名或保存表格?基于iText.Kernel.Pdf 解决方案
推荐阅读
相关推荐
C#实战:基于iTextSharp实现PDF加密功能
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验