网站首页 > 基础教程 正文
如果你安装的有Adobe Acrobat Pro的话就不用看了,它可以直接把PDF按页导出为图片的,本文实现的是在没有专用软件的情况下,通过自己编写的小软件实现PDF导出为图片,可以导出其中的一页或多页。
iTextShape可以实现拆分PDF,但它无法实现把拆分的PDF保存成图片,所以你需要引用PDFRender4NET,这是一个收费的第三方库,免费使用时导出的图片在右上角会多出一行文字,当然你也可以在网上找到它的没有水印的版本。
PDFRender4NET可以设置导出图片的清晰度,从1到10,如果设置为10时导出的图片是相当的清晰,下面拖了个导出图片的界面,在导出为图片时,拆分后再合并的功能不起作用。
先判断一下选择的是哪种导出范围,可以是单独的一页,可以是不连续的多页,也可以是连续的多页,页码信息保存在list<int>中,list比数组要好用。
//导出为图片格式
int mode = 0;
List<int> pages = new List<int>();
if (path.Length < 1)
{
ShowMessage("请先选择一个需要处理的PDF文件哦!");
return;
}
mode = ModeSelect();
if (mode == 1)
{
int page = Convert.ToInt32(txt_dy.Value);
pages.Add(page);
DoPdfToImg(path, pages);
}
if (mode == 2)
{
int p1 = Convert.ToInt32(txt_begin.Text.ToString());
int p2 = Convert.ToInt32(txt_end.Text.ToString());
if (p1 > p2)
{
ShowMessage("开始页不能大于结束页,请重新选择!");
return;
}
for (int i = p1; i <= p2; i++)
{
pages.Add(i);
}
DoPdfToImg(path, pages);
}
if (mode == 3)
{
string SPage = txt_duoye.Text.ToString().Trim();
SPage = SPage.Replace(",", ",").Replace(";", ",").Replace(";", ",").Replace("-", ",").Replace("=", ",");
string[] page = SPage.Split(',');
for (int i = 0; i < page.Length; i++)
{
string p = page[i];
bool isNumeric = int.TryParse(p, out int num);
if (!isNumeric)
{
ShowMessage("不连续页中有页码不是数字,请检查后再试!");
return;
}
pages.Add(num);
}
DoPdfToImg(path, pages);
}
具体的导出功能,参数为原文件名和页码
public void DoPdfToImg(string filePath, List<int> Pages)
{
string newFile = "";
PDFFile pdfFile = PDFFile.Open(filePath);
int n = pdfFile.PageCount;
int offset = Convert.ToInt32(txt_offset.Text.Trim().ToString());
int qxd = Convert.ToInt32(txt_qxd.Text.Trim().ToString());
foreach (int i in Pages)
{
if ((i + offset) == 0 || (i + offset) > n)
{
continue;
}
newFile = System.IO.Path.GetDirectoryName(path) + "\\" + i.ToString() + "_" + Fname + ".png";
Bitmap pageImage = pdfFile.GetPageImage(i + offset - 1, 56 * qxd);
pageImage.Save(newFile, ImageFormat.Png);
pageImage.Dispose();
}
ShowMessage("PDF文件已拆分完成,请打开原文件夹进行查看!");
}
导出的图片保存在原文件夹下,文件名为页码+原文件名的png格式图片
- 上一篇: C# 操作Excel文件之NPOI (一) c#操作excel文件读写
- 下一篇:已经是最后一篇了
猜你喜欢
- 2024-12-26 C#如何获取计算机或硬件信息 c#获取其他程序界面内容
- 2024-12-26 C# 操作Excel文件之NPOI (一) c#操作excel文件读写
- 2024-12-26 解释C#中的任务并?库(TPL)及其?途
- 2024-12-26 解释 C# 中的任务并?库是如何?作的
- 2024-12-26 NPOI在C#中的用法 c++ npoi
- 2024-12-26 C#程序员参考手册 高清版 c#程序设计实用教程
- 2024-12-26 C#远程唤醒指定客户端代码 c#远程通讯
- 2024-12-26 一起来看看C#的圈复杂度 c# :?
- 2024-12-26 TCP网络编程中connect()、listen()和accept()三者之间的关系
- 2024-12-26 C#零基础入门运动控制卡学习实验教程1——运动控制高速低速实验
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)