前有許多在線轉檔工具可以解決使用者的格式轉換需求,共通性是通過瀏覽器開啟網站即可進行轉換,無需額外下載、安裝軟件或工具,因為這些服務多半將文件上傳遠程服務器進行處理,即使是移動設備也能正常執行,例如 Convertr 就整合音訊、影片和其他文件格式的在線轉檔:
本文要介紹的「cdkm」是一個免費在線轉檔工具,號稱次世代轉換器、整合許多開放原始碼項目建構而成,支持各種常見常用文件類型,包括文件、電子書、圖片、影片、音樂或是一些比較少用的格式,不過要注意的是 cdkm 每次轉換最多只能上傳 10 個文件(如果有開啟廣告阻擋器就無法使用批次轉換功能)。
cdkm 可轉檔的文件文件最大 40 MB,其他格式文件最大 200 MB,雖然轉換速度快,若遇到文件過大就有很大的機會無法成功轉換。
cdkm 支持以下格式(完整列表):
轉換后文件可直接下載或是產生分享鏈接,提供給其他人下載、使用,有些文件格式還能直接在瀏覽器進行預覽,如果臨時需要轉檔、但手邊又沒有合適的轉檔工具就可以試試看。
網站鏈接:https://cdkm.com/
使用教學
開啟 cdkm 網站后點選「Choose Files」選擇要轉換的源文件或選擇「remote file URL」以遠程文件鏈接方式輸入文件進行轉換。
cdkm 不會自動選擇可轉換的格式,使用者需要從右側的「Target Format」目標格式選擇要轉換的文件新格式,依照不同類型分類更容易尋找。
選好后點選最右邊的紅色按鈕「Start Convertsion」開始轉換,轉換時需要一段時間將文件上傳到遠程服務器,完成后結果文件就會顯示在下方的 Output Files 字段,點選后方「Download」按鈕就能將轉換后的文件下載保存。
有些文件還可以直接在線預覽,如果要復制下載鏈接可點選「Copy to clipboard」就能將文件網址復制到剪貼簿。
值得一試的三個理由:
是編程樂趣,一個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.net
AnyTXT Searcher是功能強大的本地數據全文搜索引擎,就像本地磁盤Google搜索引擎一樣。它是您理想的桌面內容搜索工具。
AnyTXT Searcher內置了功能強大的文檔解析引擎,該引擎無需安裝任何其他軟件即可提取常用文檔的文本,并且結合了內置的高速索引系統來存儲文本的元數據。
您可以使用AnyTXT Searcher快速找到計算機上存在的任何單詞。
它可以在Windows 10、8、7,Vista,XP,2008、2012、2016等操作系統上完美運行。
支持的格式
特色功能
軟件下載安裝,選擇“中文”安裝,安裝后就會是中文界面。
點擊“工具”-“文件索引管理器”,可以自定義搜索文件類型和目錄,默認排除C:\windows系統根目錄搜索。
第一次使用會自動生成索引文件,只要在搜索欄輸入想要查找的單詞或是短語就可以輕松找到。親測SSD上搜索文件中有“智慧教育”文本的文件只有0.093秒,找到了全部的177個文件。
當然,我們還可以點擊右上角的“分類顯示”按鈕,實現文檔類型的精準定位。
此外,軟件還能支持簡單的文件復制移動的管理操作。
之前胖胖老師也使用過谷歌桌面搜索、everything等軟件來搜索文本,不過如果只是臨時應急查找的話,推薦試試AnyTXT Searcher,簡單方便,還是免費的。
胖胖老師給大家準備了網盤下載地址,私信回復“文本”即可獲得。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。