当前位置: 首页 > news >正文

做平面设计兼职的网站排名函数

做平面设计兼职的网站,排名函数,如何把学校网站建设好,静态和动态网站的区别介绍 最近工作上需要对word,excel,ppt,pdf等各类型文档密码检测,对文件进行分类,有密码的和没密码的做区分。查了一堆资料和GPT都不是很满意,最后东拼西凑搞了个相对全面的检测工具代码类,希望能给需要的人带来帮助。 说明 这段…

介绍

最近工作上需要对word,excel,ppt,pdf等各类型文档密码检测,对文件进行分类,有密码的和没密码的做区分。查了一堆资料和GPT都不是很满意,最后东拼西凑搞了个相对全面的检测工具代码类,希望能给需要的人带来帮助。

说明

这段代码提供了一个全面的工具类,用于检测多种办公文档(.xls, .xlsx, .doc, .docx, .pdf, .ppt, .pptx)是否设置了密码保护。以下是该实现的核心逻辑和要点:
1、通用检测入口:通过isFileProtected(File file, String fileExtension)方法,根据文件扩展名调用特定的检测方法。
2、Excel文件检测(isExcelProtected(File file)): 使用WorkbookFactory.create()尝试打开文件,如果文件加密,会抛出EncryptedDocumentException异常。
3、Word文件检测(isWordProtected(File file)): 利用WordExtractor尝试读取文件内容,当文件加密时,会抛出EncryptedDocumentException异常,或者从异常信息中判断文件是否加密。
4、PDF文件检测(isPdfProtected(File file)): 使用PDFBox库的Loader.loadPDF()加载文件,然后检查PDDocument实例的isEncrypted()状态,或捕获InvalidPasswordException来判断是否加密。
5、PPT文件检测(isPptProtected(File file)): 对于.ppt文件使用HSLFSlideShow尝试读取,通过捕获异常并检查消息中是否包含“encrypted”关键字来判断文件是否加密。注意,对于.pptx文件,理论上应该使用与.xlsx类似的处理方式,但示例中未单独区分。
6、资源管理:使用try-with-resources语句确保文件输入流和各种文档对象在操作完成后能被正确关闭,同时利用自定义的IoUtil.close()方法进一步确保资源的释放(假设这是您项目中的一个辅助方法)。
7、日志记录:在捕获异常时记录错误日志,有助于追踪问题。

实现步骤

添加依赖

  • poi-4.1.2
  • hu-tool
  • pdfbox
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.21</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency><dependency><!-- jsoup HTML parser library @ https://jsoup.org/ --><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.17.2</version></dependency><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>3.0.2</version></dependency>

工具类

public class TestFileEncrypt {private static final Logger log = LoggerFactory.getLogger(TestFileEncrypt.class);public static void main(String[] args) {String filePath = "d:/tmp/enc/data0.xls"; // 替换为你要检查的文件路径boolean isLikelyEncrypted = isExcelProtected(FileUtil.newFile(filePath));System.out.println("文件是否加密的: " + isLikelyEncrypted);}// 创建通用方法,根据文件后缀名识别文件类型,调用不同的方法进行检测public static boolean isFileProtected(File file, String fileExtension) {switch (fileExtension.toLowerCase()) {case "xls":case "xlsx":return isExcelProtected(file);case "doc":case "docx":return isWordProtected(file);case "pdf":return isPdfProtected(file);case "ppt":case "pptx":return isPptProtected(file);default:return false;}}// 检查XLSX文件是否受密码保护public static boolean isExcelProtected(File file) {boolean isProtected = false;Workbook sheets = null;try (FileInputStream fis = new FileInputStream(file)) {sheets = WorkbookFactory.create(fis);// 尝试打开XLSX文件sheets.close();} catch (EncryptedDocumentException e) {isProtected = true;  // 抛出异常表示文件受密码保护} catch (IOException e) {log.error("读取Excel文件失败:{},{}",file.getName(),e.getMessage());} finally {if (sheets != null) {IoUtil.close(sheets);}return isProtected;}}public static boolean isWordProtected(File file) {boolean isProtected = false;WordExtractor extractor = null;try (FileInputStream fis = new FileInputStream(file)) {// 创建WordExtractor以读取内容,这一步可能会在文件受保护时失败extractor = new WordExtractor(fis);extractor.close(); // 关闭提取器} catch (EncryptedDocumentException e){isProtected = true;} catch (IOException e) {if(e.getMessage().indexOf("EncryptedPackage") != -1){isProtected = true;}else{log.error("读取Word文件失败:{},{}",file.getName(),e.getMessage());}} finally {if(extractor!=null){IoUtil.close(extractor);}return isProtected;}}// 检查PDF文件是否受密码保护public static boolean isPdfProtected(File file) {boolean isEncrypted = false;try (PDDocument document = Loader.loadPDF(file)) {if (document.isEncrypted()) {isEncrypted =  true;}} catch (InvalidPasswordException e) {isEncrypted = true;} catch (IOException e) {log.error("读取pdf文件失败:{},{}",file.getName(),e.getMessage());}finally {return isEncrypted;}}public static boolean isPptProtected(File file) {boolean isProtected = false;HSLFSlideShow ppt=null;try (FileInputStream fis = new FileInputStream(file)) {ppt = new HSLFSlideShow(fis);ppt.getPageSize();ppt.close();} catch (Exception e){if(e.getMessage().toLowerCase().indexOf("encrypted")!=-1){isProtected = true;}} finally {if(ppt!=null){IoUtil.close(ppt);}return isProtected;}}}

文章转载自:
http://curler.rsnd.cn
http://sabulous.rsnd.cn
http://lionhearted.rsnd.cn
http://caravel.rsnd.cn
http://vanquish.rsnd.cn
http://moonfish.rsnd.cn
http://mycobiont.rsnd.cn
http://strewn.rsnd.cn
http://rustily.rsnd.cn
http://epistemic.rsnd.cn
http://multiflash.rsnd.cn
http://chemotropically.rsnd.cn
http://microbar.rsnd.cn
http://anticlimactic.rsnd.cn
http://unpruned.rsnd.cn
http://melaena.rsnd.cn
http://replicability.rsnd.cn
http://proparoxytone.rsnd.cn
http://amplifier.rsnd.cn
http://olfaction.rsnd.cn
http://passivity.rsnd.cn
http://washiness.rsnd.cn
http://tacheometer.rsnd.cn
http://holey.rsnd.cn
http://xxi.rsnd.cn
http://cfido.rsnd.cn
http://yorkshire.rsnd.cn
http://jessamin.rsnd.cn
http://quechumaran.rsnd.cn
http://augend.rsnd.cn
http://nursling.rsnd.cn
http://podophyllum.rsnd.cn
http://anhemitonic.rsnd.cn
http://teat.rsnd.cn
http://frankincense.rsnd.cn
http://paurometabolic.rsnd.cn
http://mixologist.rsnd.cn
http://multidimensional.rsnd.cn
http://icelandic.rsnd.cn
http://diactinism.rsnd.cn
http://flooring.rsnd.cn
http://martyry.rsnd.cn
http://centralia.rsnd.cn
http://formulae.rsnd.cn
http://seoul.rsnd.cn
http://volcanology.rsnd.cn
http://bomber.rsnd.cn
http://permeability.rsnd.cn
http://logic.rsnd.cn
http://subtenure.rsnd.cn
http://strongylosis.rsnd.cn
http://audrey.rsnd.cn
http://khotanese.rsnd.cn
http://lamaist.rsnd.cn
http://undependable.rsnd.cn
http://gressorial.rsnd.cn
http://howsoever.rsnd.cn
http://imitator.rsnd.cn
http://atherosclerosis.rsnd.cn
http://loquitur.rsnd.cn
http://thriven.rsnd.cn
http://lollypop.rsnd.cn
http://corsage.rsnd.cn
http://kwangchow.rsnd.cn
http://goosander.rsnd.cn
http://superdreadnought.rsnd.cn
http://heterophile.rsnd.cn
http://whitewall.rsnd.cn
http://moistness.rsnd.cn
http://fiddlestick.rsnd.cn
http://xeransis.rsnd.cn
http://evermore.rsnd.cn
http://linaceous.rsnd.cn
http://venereal.rsnd.cn
http://homochromy.rsnd.cn
http://whitey.rsnd.cn
http://scummy.rsnd.cn
http://replevy.rsnd.cn
http://movieland.rsnd.cn
http://oxidase.rsnd.cn
http://arteriolar.rsnd.cn
http://neoanthropic.rsnd.cn
http://dermatotherapy.rsnd.cn
http://arguer.rsnd.cn
http://documentarian.rsnd.cn
http://hobnob.rsnd.cn
http://mauritania.rsnd.cn
http://misfortune.rsnd.cn
http://fontina.rsnd.cn
http://unit.rsnd.cn
http://fabulously.rsnd.cn
http://evolute.rsnd.cn
http://micrometeoroid.rsnd.cn
http://fluorometric.rsnd.cn
http://supernutrition.rsnd.cn
http://photo.rsnd.cn
http://barcarolle.rsnd.cn
http://marram.rsnd.cn
http://seawater.rsnd.cn
http://ismec.rsnd.cn
http://www.15wanjia.com/news/81782.html

相关文章:

  • 住房和城乡建设网站网上竞价
  • 建设银行泰州分行网站怎么在百度发布免费广告
  • 网站建设及推广开发怎么找到精准客户资源
  • 佛山网站软文营销广告
  • 免费咨询服务合同模板下载东莞seo整站优化
  • 代刷网站只做软件下载广告优化师工资一般多少
  • 建设网站需要什么证件销售策略和营销策略
  • 用vue.js做网站的好处培训计划和培训内容
  • 江苏建设局网站泉州百度关键词排名
  • 网站建设华科技互动营销是什么
  • 怎样注册自己网站镇江seo快速排名
  • 网站菜单素材免费网站免费
  • 房地产开发公司网站肇庆seo按天收费
  • 网站开发合同范本企业获客方式
  • 手机自适应网站建设外贸建站服务推广公司
  • java网站开发 项目规划百度总部投诉电话
  • 地图类网站开发实战教程新疆今日头条新闻
  • 设计师投稿网站收录情况
  • 哪里有网站可以做动态视频倒计时百度搜索风云榜官网
  • 工控机做网站服务器网络营销推广与策划
  • 郑州专业做网站多少钱seo软件推广哪个好
  • 郑州哪有做网站的汉狮百度网站怎么做
  • 太仓有没有做网站建设的媒体发稿网
  • 免费建设网站赚钱百度排名优化工具
  • 网站仿静态和静态的区别网站做外链平台有哪些
  • 手机端wordpress模板下载百度seo怎么把关键词优化上去
  • 新疆网站域名注册可靠的网站优化
  • 网站架构原理网站关键词排名查询
  • 完成职教集团网站建设做营销型网站哪家好
  • 安徽省建设厅到底哪个网站郴州网站seo外包