免费PDF工具v1.0(个人C#编程作品,免费使用)
一、功能:
功能就是要解决的问题
1.PDF合并:批量合并多个PDF文件为一个文件 2.PDF拆分:批量拆分多个PDF文件,按x页/文档的方式拆分,重新命名 3.PDF提取:把一个PDF文件拆解为,一个为x-y页文件,一个为other文件 |
二、图文展示
1.合并
2.拆分
3.提取
三、部分代码
1.合并代码
//执行合并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.拆分代码
//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.提取代码
//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.部分函数方法
//提取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
记得分享给你的朋友,大家一起免费使用