整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

想转换文件格式?收好这个免费在线神器「cdkm」

前有许多在线转档工具可以解决使用者的格式转换需求,共通性是通过浏览器开启网站即可进行转换,无需额外下载、安装软件或工具,因为这些服务多半将文件上传远程服务器进行处理,即使是移动设备也能正常执行,例如 Convertr 就整合音讯、影片和其他文件格式的在线转档:

本文要介绍的「cdkm」是一个免费在线转档工具,号称次世代转换器、整合许多开放原始码项目建构而成,支持各种常见常用文件类型,包括文件、电子书、图片、影片、音乐或是一些比较少用的格式,不过要注意的是 cdkm 每次转换最多只能上传 10 个文件(如果有开启广告阻挡器就无法使用批次转换功能)。

cdkm 可转档的文件文件最大 40 MB,其他格式文件最大 200 MB,虽然转换速度快,若遇到文件过大就有很大的机会无法成功转换。

cdkm 支持以下格式(完整列表):

  • 文件:PDF、TXT、WORD、DOCX、EXCEL、XLSX、PPT、PPTX、HTML、XPS、ODT、ODS、ODP、CSV、XML、JSON、EML 和 MSG。
  • 电子书:EPUB、MOBI、AZW3 和 DJVU。
  • 图片:JPG、PNG、GIF、SVG、WEBP、DDS、JXR、PSD、TIFF、EPS、BMP、AVIF、AI、CDR、DWG 和 ICO。
  • 影片:MP4、MOV、WEBM、MKV、WMV、FLV、AVI、OGV、VOB 和 MPEG。
  • 音频:MP3、M4A、AAC、OGG、WAV、WMA 和 OPUS。

转换后文件可直接下载或是产生分享链接,提供给其他人下载、使用,有些文件格式还能直接在浏览器进行预览,如果临时需要转档、但手边又没有合适的转档工具就可以试试看。

cdkm

网站链接:https://cdkm.com/

使用教学

开启 cdkm 网站后点选「Choose Files」选择要转换的源文件或选择「remote file URL」以远程文件链接方式输入文件进行转换。

cdkm 不会自动选择可转换的格式,使用者需要从右侧的「Target Format」目标格式选择要转换的文件新格式,依照不同类型分类更容易寻找。

选好后点选最右边的红色按钮「Start Convertsion」开始转换,转换时需要一段时间将文件上传到远程服务器,完成后结果文件就会显示在下方的 Output Files 字段,点选后方「Download」按钮就能将转换后的文件下载保存。

有些文件还可以直接在线预览,如果要复制下载链接可点选「Copy to clipboard」就能将文件网址复制到剪贴簿。

值得一试的三个理由:

  • 免费在线转档工具,整合多种开放源码项目建构而成
  • 可转换文件、电子书、图片、影片、音乐或是一些比较少用的格式
  • 免费转换最多上传 10 个文件,文件最大 40 MB,其他格式文件最大 200 MB

是编程乐趣,一个10年.Net开发经验老程序员,点击右上方“关注”,每天为你分享开源项目和编程知识。

在我们日常项目开发中,经常需要解析操作文档,比如Office文档、Email文件、PDF、Xml、图片、Mp3等音频文件,操作Office、PDF文件我们需要用到IFilter,操作文本、图片文件需要用到File,每一个文档格式都需要用到不同接口,或者引入不同的第三方插件。

今天给大家推荐一个开源库,这些文档格式通通支持,一网打尽,让我们不需要再关心这些文档底层操作。

项目简介

这是一个基于.Net开发的数据/文本操作开源项目,支持docx、xlsx、xls、pdf、csv、txt、epub、html等30多种格式,使用简单友好,是一个可以帮助我们识别文件格式,并将数据/文本提取为统一结构的智能框架。

支持文档格式有:

txt,xml,csv,xls,xlsx,ppt,vsd,pub,shw,sldprt,pptx,pubx,vsdx,doc,docx,rtf,pdf,html,htm,eml,msg,vcf,zip,mp3,ape,wma,flac,aif,jpeg,jpg,gif,tiff,png。

如上图所示,该项目对各种文件格式进行底层封装,我们只需专注业务的开发,不需要了解底层细节。

技术架构

1、跨平台:基于.Net Standard 2.0开发,支持Windows、Liunx、Mac。

项目结构

通过项目引入的包,我们可以清晰的看到,该项目实际上是针对不同文件格式,通过引用第三方包进行统一封装,比如使用NPOI进行解析Office文档、使用iText来解析PDF,使用TagLib解析MP3、Wav等音频文件。

使用方法

Word文档操作

//解析docx文档
ParserContext context = new ParserContext(TestDataSample.GetWordPath("SampleDoc.docx"));
IDocumentParser parser = ParserFactory.CreateDocument(context);
ToxyDocument doc = parser.Parse();
//获取段落的数量
Assert.AreEqual(7,doc.Paragraphs.Count);
//判断第一段落的文本
Assert.AreEqual("I am a test document",doc.Paragraphs[0].Text);

Excel文件操作

//解析xlsx文档
ParserContext context = new ParserContext(TestDataSample.GetExcelPath('text.xlsx'));
ISpreadsheetParser parser = ParserFactory.CreateSpreadsheet(context);
ToxySpreadsheet ss = parser.Parse();


//获取Excel表格数量与名称
Assert.AreEqual(3, ss.Tables.Count);
Assert.AreEqual("Sheet1", ss.Tables[0].Name);
Assert.AreEqual("Sheet2", ss.Tables[1].Name);
Assert.AreEqual("Sheet3", ss.Tables[2].Name);


//获取总行数
Assert.AreEqual(5, ss.Tables[0].Rows.Count);
Assert.AreEqual(0, ss.Tables[1].Rows.Count);
Assert.AreEqual(0, ss.Tables[2].Rows.Count);


//获取指定行数
ToxyTable table = ss.Tables[0];
Assert.AreEqual(1, table.Rows[0].RowIndex);
Assert.AreEqual(2, table.Rows[1].RowIndex);
Assert.AreEqual(3, table.Rows[2].RowIndex);
Assert.AreEqual(4, table.Rows[3].RowIndex);
Assert.AreEqual(5, table.Rows[4].RowIndex);


//获取总表格数
Assert.AreEqual(1, table.Rows[0].Cells.Count);
Assert.AreEqual(0, table.Rows[1].Cells.Count);
Assert.AreEqual(2, table.Rows[2].Cells.Count);
Assert.AreEqual(2, table.Rows[3].Cells.Count);
Assert.AreEqual(2, table.Rows[4].Cells.Count);


//获取指定表格的值
Assert.AreEqual("Employee Info", table.Rows[0].Cells[0].ToString());
Assert.AreEqual(1, table.Rows[0].Cells[0].CellIndex);

PDF文档操作

//解析PDF文档
string path = TestDataSample.GetPdfPath("Sample1.PDF");
var parser = new PDFDocumentParser(new ParserContext(path));
var result = parser.Parse();
//获取段落数
Assert.AreEqual(1474, result.Paragraphs.Count);
//判断第一段落的文本
Assert.AreEqual("LA MARCHE MONDIALE DES FEMMES", result.Paragraphs[0].Text);

图片文件操作

//解析jpg图片
string path = Path.GetFullPath(TestDataSample.GetImagePath("sample_sony1.jpg"));
ParserContext context = new ParserContext(path);
IMetadataParser parser = (IMetadataParser)ParserFactory.CreateMetadata(context);
ToxyMetadata x = parser.Parse();
//属性数量
Assert.AreEqual(12, x.Count);
//图片宽模式时间等信息
Assert.AreEqual(2592, x.Get("PhotoHeight").Value);
Assert.AreEqual(95, x.Get("PhotoQuality").Value);
Assert.AreEqual(3872, x.Get("PhotoWidth").Value);
Assert.AreEqual("DSLR-A200", x.Get("Model").Value);
Assert.AreEqual((uint)400, x.Get("ISOSpeedRatings").Value );
Assert.AreEqual(5.6, x.Get("FNumber").Value);
Assert.AreEqual((double)35, x.Get("FocalLength").Value );
Assert.AreEqual((uint)52, x.Get("FocalLengthIn35mmFilm").Value );
Assert.AreEqual(new DateTime(2009, 11, 21, 12, 39, 39), x.Get("DateTime").Value);

以上是部分文件格式的解析例子,更多功能,大家可以下载源码学习,针对每一种格式,都有非常详细的单元测试例子,看完例子完全不需要文档。

开源项目

https://github.com/nissl-lab/toxy

我是编程乐趣,一个10年.Net开发经验老程序员,专注开源项目和编程知识分享。

私信回复:【888】,领取.Net视频教程。

- End -

推荐阅读

一个简单、功能完整的WMS仓库管理系统

年度盘点10个最受欢迎的.Net开源项目

一个强大、支持100多种格式.Net图片操作库

一个.Net简单、易用的配置文件操作库

基于.NetCore,前端Layui、React、Vue且前后端分离快速开发框架

家工作、学习时间长了,各类文档也多了,如何快速文档中的某个特定字词、语句呢?

Windows 10自带的索引无法搜索文本中的文字,那么有没有好用的免费工具,可以帮助老师们解决这个难题呢?

胖胖老师推荐给大家一款GitHub上免费开源的小工具——AnyTXT Searcher。

关于AnyTXT Searcher

官网地址:anytxt.net

AnyTXT Searcher是功能强大的本地数据全文搜索引擎,就像本地磁盘Google搜索引擎一样。它是您理想的桌面内容搜索工具。

AnyTXT Searcher内置了功能强大的文档解析引擎,该引擎无需安装任何其他软件即可提取常用文档的文本,并且结合了内置的高速索引系统来存储文本的元数据。

您可以使用AnyTXT Searcher快速找到计算机上存在的任何单词。

它可以在Windows 10、8、7,Vista,XP,2008、2012、2016等操作系统上完美运行。

支持的格式

  • 纯文本格式(txt,cpp,html等)
  • Microsoft Outlook(eml)
  • Microsoft Word(doc,docx)
  • Microsoft Excel(xls,xlsx)
  • Microsoft PowerPoint(ppt,pptx)
  • 便携式文件格式(pdf)(测试版)

特色功能

  • 支持Microsoft Office(doc,xls,ppt)
  • 支援Microsoft Office 2007(docx,xl​​sx,pptx,docm,xlsm,docm)
  • 支持PDF(测试版)
  • 非英文文件支持
  • 全文搜索
  • 实时搜索(测试版)
  • SSD优化
  • 快速索引
  • 快速搜寻
  • 多国语言支持

上手体验

软件下载安装,选择“中文”安装,安装后就会是中文界面。

点击“工具”-“文件索引管理器”,可以自定义搜索文件类型和目录,默认排除C:\windows系统根目录搜索。

第一次使用会自动生成索引文件,只要在搜索栏输入想要查找的单词或是短语就可以轻松找到。亲测SSD上搜索文件中有“智慧教育”文本的文件只有0.093秒,找到了全部的177个文件。

当然,我们还可以点击右上角的“分类显示”按钮,实现文档类型的精准定位。

此外,软件还能支持简单的文件复制移动的管理操作。

小结

之前胖胖老师也使用过谷歌桌面搜索、everything等软件来搜索文本,不过如果只是临时应急查找的话,推荐试试AnyTXT Searcher,简单方便,还是免费的。

胖胖老师给大家准备了网盘下载地址,私信回复“文本”即可获得。