PDF转Word有那么难吗?做一个文件转换器,都解决了

简介: 这个小工具软件主要针对两个文件格式的转换,一个是针对KML文件对KML文件里面的经纬度的提取和生成,另一个是对PDF文件的格式转换,相信大家用过WPS,WPS的PDF转换是需要开会员才能转,所以我想自己写一个小工具软件,给大家白嫖一下,由于第一次做这种软件有个别考虑不周到的地方,希望大家谅解,我继续学习给大家做更好更优质的小工具给大家使用。文章最后贴了源码和软件安装包大家下载安装就可以用了,源码在后面大家想要继续增加功能也可以,这个小工具是用C#开发的,有一点点小bug不影响使用。家人们建议点赞收藏,你的点赞是我更文的动力。

前言:

这个小工具软件主要针对两个文件格式的转换,一个是针对KML文件对KML文件里面的经纬度的提取和生成,另一个是对PDF文件的格式转换,相信大家用过WPS,WPS的PDF转换是需要开会员才能转,所以我想自己写一个小工具软件,给大家白嫖一下,由于第一次做这种软件有个别考虑不周到的地方,希望大家谅解,我继续学习给大家做更好更优质的小工具给大家使用。文章最后贴了源码和软件安装包大家下载安装就可以用了,源码在后面大家想要继续增加功能也可以,这个小工具是用C#开发的,有一点点小bug不影响使用。家人们建议点赞收藏,你的点赞是我更文的动力。

一、对KML文件的经纬度操作(想要看PDF转换直接跳到PDF转换位置)

1.1读取KML文件的经纬度

选择你需要提取经纬度的KMl文件的位置,勾选你需要的功能,没勾选不会生成,提取之后会展示在界面,也可以一提取到TXT文件中,方便你查看。

1.1提取过程,不导出TXT文档

没有勾选导出文本文件时不会导出的,只会展示经纬度的内容如下图所示

1.2提取过程,导出TXT文档

选择导出文本文件,你需要选择你的保存路径和文件名,如下图所示

1.2 读取TXT文件生成KML文件

1.1读取过程使用文件

选择你需要的生成KML经纬度文件的TXT文本文件,选择之后点生成,会让你选择保存路径,输入文件名即可,具体操作如下图

1.2读取过程使用输入框

除了使用TXT文件生成也可使用输入框,输入你想要生成的点,你输入多少经纬度的点就会生成多少,具体操作如下

1.3注意事项

因为我只做了对KML文件中Point中的coordinates生成和提取,其他的没有做,看后期有时间了再完善

二、对PDF文件的格式转换

1.1PDF转Word文档

选择你需要转换文档格式,PDF转Word,选择你需要转的PDF文档位置,点击生成,会弹出保存路径和需要保存的文档名

效果展示:

1.2PDF转EXCEl和HTML

效果如下图,步骤同上图一样

1.3PDF转图片

选择你需要的转换的PDF文档,选择你需要转出图片的格式,有八个格式可以选择,不选会有提示,然后将PDF文档中的每一页都会生成一个图片,选择你需要保存的位置,保存即可。

1.4注意事项

PDF转的文档会有一个注解删除即可,文档比较大可以使用替换将那条注解删除,在生成的时候需要注意稍微要等一会才会生成。

三、小工具界面设计

使用的时C#Winform设计,用了三个Panel作为容器,通过按钮对三个panel隐藏展示处理实现切换功能。

四、代码逻辑

using PdfiumViewer;

using Spire.Pdf;

using System;

using System.Collections.Generic;

using System.Drawing.Imaging;

using System.IO;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace FileConversion

{

   public partial class Form1 : Form

   {

       public Form1()

       {

           InitializeComponent();

       }

       public string KmlPath="";

       public string txtPath = "";

       public string PDFPath = "";

       public string PDFPhotoPath = "";

       public bool flag = false;

       private void button6_Click(object sender, EventArgs e)

       {

           OpenFileDialog openFile = new OpenFileDialog();

           openFile.Filter = "KML文件(*.kml)|*.kml|所有文件|*.*";

           if (openFile.ShowDialog() != DialogResult.OK)//打开文件是否点击了取消

               return ;

           KmlPath = openFile.FileName;

           textBox1.Text = KmlPath;

       }

       private void button7_Click(object sender, EventArgs e)

       {

           DataExtract data = new DataExtract();

           if(KmlPath.Equals("")==true)

           {

               MessageBox.Show("选择文件之后才能导出");

           }

           else

           {

               if (checkBox1.Checked == true && checkBox2.Checked == false|| checkBox1.Checked == true && checkBox2.Checked == true)

               {

                   List<string> list = data.MapConfigs(KmlPath);

                   string localFilePath = "";//文件路径

                   SaveFileDialog save = new SaveFileDialog();

                   save.Filter = "Txt(*.txt)|*.txt";        //设置文件类型  

                   save.RestoreDirectory = true; //保存对话框是否记忆上次打开的目录

                   if (save.ShowDialog() == DialogResult.OK)//点了保存按钮进入

                   {

                       localFilePath = save.FileName.ToString(); //获得文件路径

                       string fileName = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1); //获取文件名,不带路径

                       //FileStream file = new FileStream(localFilePath, FileMode.Create);

                       foreach (string kml in list)

                       {

                           textBox2.Text += kml + "\r\n";

                           File.AppendAllText(localFilePath, kml+"\r\n");

                       }

                   }

               }

               else if (checkBox1.Checked == false && checkBox2.Checked == true)

               {

                      List<string> list = data.MapConfigs(KmlPath);

                       foreach (string kml in list)

                       {

                           textBox2.Text += kml + "\r\n";

                       }

               }

               else

               {

                   MessageBox.Show("选择你需要的项");

               }

           }

       }

       private void button1_Click(object sender, EventArgs e)

       {

           panel3.Visible = true;

           panel4.Visible = false;

           panel5.Visible = false;

       }

       private void button9_Click(object sender, EventArgs e)

       {

           OpenFileDialog openFile = new OpenFileDialog();

           openFile.Filter = "Txt(*.txt)|*.txt";

           if (openFile.ShowDialog() != DialogResult.OK)//打开文件是否点击了取消

               return;

           txtPath = openFile.FileName;

           textBox4.Text = txtPath;

       }

       private void button8_Click(object sender, EventArgs e)

       {

           AddKmlFile addKml = new AddKmlFile();

           List<string> list = new List<string>();

           if (txtPath.Equals("") == true && richTextBox1.Text.Equals("") == true)

           {

               MessageBox.Show("不能生成空KMl,导入txt文件或者在文本框粘贴");

           }

           else if(txtPath.Equals("")==false&& richTextBox1.Text.Equals("") == true)

           {

               list.Clear();

               string[] stringlines = File.ReadAllLines(txtPath, Encoding.Default);

               for (int i = 0; i < stringlines.Length; i++)

               {

                   list.Add(stringlines[i]);

               }

               addKml.addKmlFile(list);

           }

           else

           {

               string str = "";

               list.Clear();

               TextReader read = new System.IO.StringReader(richTextBox1.Text);

               str= read.ReadLine();

               while(str!=null)

               {

                   list.Add(str);

                   str = read.ReadLine();

               }

               addKml.addKmlFile(list);

           }

       }

       private void Form1_Load(object sender, EventArgs e)

       {

           panel3.Visible = true;

           panel4.Visible = false;

           panel5.Visible = false;

       }

       private void button2_Click(object sender, EventArgs e)

       {

           panel3.Visible = false;

           panel4.Visible = true;

           panel5.Visible = false;

       }

       private void button10_Click(object sender, EventArgs e)

       {

           Spire.Pdf.PdfDocument pdf = new Spire.Pdf.PdfDocument();

           if(textBox3.Text.Equals("")!=true&&(radioButton1.Checked!=false|| radioButton2.Checked != false || radioButton3.Checked != false) )

           {

               if (radioButton1.Checked)

               {

                   try

                   {

             

                       SaveFileDialog save = new SaveFileDialog();

                       save.Filter = "DOC(*.doc)|*.doc";        //设置文件类型  

                       save.RestoreDirectory = true; //保存对话框是否记忆上次打开的目录

                       save.FileName = "请输入你要保存的文件名";

                       if (save.ShowDialog() == DialogResult.OK)//点了保存按钮进入

                       {

                           label6.Text = "转换中请耐心等待.....";

                           pdf.LoadFromFile(PDFPath);

                           pdf.SaveToFile(save.FileName.ToString(), FileFormat.DOC);//生成word的物理路径

                           label6.Text = "转换成功";

                       }

                   }

                   catch

                   {

                       label6.Text = "转换失败";

                   }

               }

               else if(radioButton2.Checked)

               {

                   try

                   {

                       SaveFileDialog save = new SaveFileDialog();

                       save.Filter = "XlS(*.xlsx)|*.xlsx";        //设置文件类型  

                       save.RestoreDirectory = true; //保存对话框是否记忆上次打开的目录

                       if (save.ShowDialog() == DialogResult.OK)//点了保存按钮进入

                       {

                           label6.Text = "转换中请耐心等待.....";

                           pdf.LoadFromFile(PDFPath);

                           pdf.SaveToFile(save.FileName.ToString(), FileFormat.XLSX);//生成word的物理路径

                           label6.Text = "转换成功";

                       }

                   }

                   catch

                   {

                       label6.Text = "转换失败";

                   }

               }

               else if(radioButton3.Checked)

               {

                   try

                   {

                       SaveFileDialog save = new SaveFileDialog();

                       save.Filter = "HTML(*.html)|*.html";        //设置文件类型  

                       save.RestoreDirectory = true; //保存对话框是否记忆上次打开的目录

                       if (save.ShowDialog() == DialogResult.OK)//点了保存按钮进入

                       {

                           label6.Text = "转换中请耐心等待.....";

                           pdf.LoadFromFile(PDFPath);

                           pdf.SaveToFile(save.FileName.ToString(), FileFormat.HTML);//生成word的物理路径

                           label6.Text = "转换成功";

                       }

                   }

                   catch

                   {

                       label6.Text = "转换失败";

                   }

               }

             

           }

           else

           {

               MessageBox.Show("选择路径和转换方式之后才能生成文件");

           }

       }

       private void button11_Click(object sender, EventArgs e)

       {

           OpenFileDialog openFile = new OpenFileDialog();

           openFile.Filter = "PDF(*.pdf)|*.pdf";

           if (openFile.ShowDialog() != DialogResult.OK)//打开文件是否点击了取消

               return;

           PDFPath = openFile.FileName;

           textBox3.Text = PDFPath;

       }

       public static void PDFConvertTo(string inFilePath, string outFilePath, ImageFormat format)

       {

           outFilePath = $"{outFilePath}\\{DateTime.Now.ToString("yyyyMMdd-HHmmss")}";

           using (var document = PdfiumViewer.PdfDocument.Load(inFilePath))

           {

               var pageCount = document.PageCount;

               for (int i = 0; i < pageCount; i++)

               {

                   string outFile = $"{outFilePath}({i + 1}).{format}";

                   var dpi = 300;

                   using (var image = document.Render(i, dpi, dpi, PdfRenderFlags.CorrectFromDpi))

                   {

                       var encoder = ImageCodecInfo.GetImageEncoders().First(c => c.FormatID == format.Guid);

                       var encParams = new EncoderParameters(1);

                       encParams.Param[0] = new EncoderParameter(

                           System.Drawing.Imaging.Encoder.Quality, 10L);

                       image.Save(outFile, encoder, encParams);

                   }

               }

           }

       }

       private void button5_Click(object sender, EventArgs e)

       {

           OpenFileDialog openFile = new OpenFileDialog();

           openFile.Filter = "PDF(*.pdf)|*.pdf";

           if (openFile.ShowDialog() != DialogResult.OK)//打开文件是否点击了取消

               return;

           PDFPhotoPath = openFile.FileName;

           textBox5.Text = PDFPhotoPath;

       }

       private void button4_Click(object sender, EventArgs e)

       {

           if (textBox5.Text.Equals("") != true &&( radioButton5.Checked != false || radioButton6.Checked != false || radioButton7.Checked != false || radioButton8.Checked != false || radioButton9.Checked != false || radioButton10.Checked != false || radioButton11.Checked != false || radioButton12.Checked != false))

           {

                   try

                   {

                   SaveFileDialog save = new SaveFileDialog();

                   save.RestoreDirectory = true; //保存对话框是否记忆上次打开的目录

                   save.FileName = "选择你需要保存的位置";

                   if (save.ShowDialog() == DialogResult.OK)//点了保存按钮进入

                   {

                       label7.Text = "转换中请耐心等待.....";

                       if(radioButton5.Checked==true)

                       {

                           PDFConvertTo(PDFPhotoPath, save.FileName.Substring(0, save.FileName.LastIndexOf("\\")), ImageFormat.Gif);

                       }

                       else if(radioButton6.Checked==true)

                       {

                           PDFConvertTo(PDFPhotoPath, save.FileName.Substring(0, save.FileName.LastIndexOf("\\")), ImageFormat.Bmp);

                       }

                       else if (radioButton7.Checked == true)

                       {

                           PDFConvertTo(PDFPhotoPath, save.FileName.Substring(0, save.FileName.LastIndexOf("\\")), ImageFormat.Jpeg);

                       }

                       else if (radioButton8.Checked == true)

                       {

                           PDFConvertTo(PDFPhotoPath, save.FileName.Substring(0, save.FileName.LastIndexOf("\\")), ImageFormat.Png);

                       }

                       else if (radioButton9.Checked == true)

                       {

                           PDFConvertTo(PDFPhotoPath, save.FileName.Substring(0, save.FileName.LastIndexOf("\\")), ImageFormat.Exif);

                       }

                       else if (radioButton10.Checked == true)

                       {

                           PDFConvertTo(PDFPhotoPath, save.FileName.Substring(0, save.FileName.LastIndexOf("\\")), ImageFormat.Wmf);

                       }

                       else if (radioButton11.Checked == true)

                       {

                           PDFConvertTo(PDFPhotoPath, save.FileName.Substring(0, save.FileName.LastIndexOf("\\")), ImageFormat.Icon);

                       }

                       else if (radioButton12.Checked == true)

                       {

                           PDFConvertTo(PDFPhotoPath, save.FileName.Substring(0, save.FileName.LastIndexOf("\\")), ImageFormat.Tiff);

                       }

                       label7.Text = "转换成功";

                   }

                   }

                   catch

                   {

                       label6.Text = "转换失败";

                   }

               }

           else

               {

               MessageBox.Show("选择路径和转换格式之后才能生成文件");

           }

       }

       private void button3_Click_1(object sender, EventArgs e)

       {

           panel3.Visible = false;

           panel4.Visible = false;

           panel5.Visible = true;

       }

   }

}

五、软件小工具下载安装

下载链接:链接:https://pan.baidu.com/s/1UEJoKMhGQjzEZZxpSokgAg提取码:IC00

总结

使用的技术有,XML文件的生成,对PDF的依赖接口的引用,对文件的读取,由于博主技术有限,只能做到这个样子,后期不断的学习,不断的探索,希望可以对这个小工具软件进一步的优化,欢迎大家留言评论一下,我们一起探讨,顺便指点我一下,我会继续学习,毕竟学无止境,家人们不喜勿喷,点赞收藏,你的点赞是我更文的动力,也是我学习的方向。栓Q啦!

目录
相关文章
|
20天前
|
小程序
公众号如何添加附传Word、Excel、Pdf、PPT文档
公众号里添加一些文档给公众号粉丝下载,比如课件PPT、申请表Word文档、岗位需求Excel表、大赛入围/获奖名单等。公众号本身是不支持直接上传文件的,但我们可以通过附件小程序“间接”上传文件。
209 0
|
6月前
|
存储 JSON API
如何将 Swagger 文档导出为 PDF 文件
你会发现自己可能需要将 Swagger 文档导出为 PDF 或文件,以便于共享和存档。在这篇博文中,我们将指导你完成将 Swagger 文档导出为 PDF 格式的过程。
|
3月前
|
C#
【PDF提取内容改名】批量提取PDF指定区域内容重命名PDF文件,PDF自动提取内容命名的方案和详细步骤
本工具可批量提取PDF中的合同编号、日期、发票号等关键信息,支持PDF自定义区域提取并自动重命名文件,适用于合同管理、发票处理、文档归档和数据录入场景。基于iTextSharp库实现,提供完整代码示例与百度、腾讯网盘下载链接,助力高效处理PDF文档。
450 40
|
3月前
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
|
2月前
|
监控 Linux 数据安全/隐私保护
Python实现Word转PDF全攻略:从入门到实战
在数字化办公中,Python实现Word转PDF自动化,可大幅提升处理效率,解决格式兼容问题。本文详解五种主流方案,包括跨平台的docx2pdf、Windows原生的pywin32、服务器部署首选的LibreOffice命令行、企业级的Aspose.Words,以及轻量级的python-docx+pdfkit组合。每种方案均提供核心代码与适用场景,并涵盖中文字体处理、表格优化、批量进度监控等实用技巧,助力高效办公自动化。
406 0
|
3月前
|
存储 人工智能 文字识别
三款安卓手机word编辑器下载,Microsoft Word,wps office,Word手机版,手机word编辑查看阅读器,PDF转换器apk下载
WPS Office是一款功能强大的办公软件,支持文档编辑、表格处理和演示文稿制作,兼容多种格式并提供丰富的云服务。它具备低内存占用、快速运行的特点,支持跨设备同步与多人协作,内置海量模板及AI辅助功能,如智能写作和PPT自动生成。此外,还可扫描文件、编辑PDF并转换为其他格式,极大提升办公效率,适合手机用户便捷操作。
215 1
|
5月前
|
人工智能 算法 安全
使用CodeBuddy实现批量转换PPT、Excel、Word为PDF文件工具
通过 CodeBuddy 实现本地批量转换工具,让复杂的文档处理需求转化为 “需求描述→代码生成→一键运行” 的极简流程,真正实现 “技术为效率服务” 的目标。感兴趣的快来体验下把
169 10
|
4月前
|
数据采集 存储 API
Python爬虫结合API接口批量获取PDF文件
Python爬虫结合API接口批量获取PDF文件
|
8月前
|
人工智能 编解码 文字识别
OCRmyPDF:16.5K Star!快速将 PDF 文件转换为可搜索、可复制的文档的命令行工具
OCRmyPDF 是一款开源命令行工具,专为将扫描的 PDF 文件转换为可搜索、可复制的文档。支持多语言、图像优化和多核处理。
886 17
OCRmyPDF:16.5K Star!快速将 PDF 文件转换为可搜索、可复制的文档的命令行工具
DeepSeek + Xmind,1分钟自动把pdf/word文档转成思维导图
DeepSeek与Xmind结合,1分钟将PDF、Word文档转换为思维导图。只需四步:上传文档至DeepSeek,请求转换为Markdown格式,保存文件并修改后缀为.md,最后导入Xmind生成思维导图。轻松驾驭复杂文档,适用于学习笔记、工作报告、项目规划等场景,大幅提升效率!

热门文章

最新文章