提前说明,软件是直接解除PDF密码,实现pdf文档密码解除效果,软件并不提供成品,就分享一下代码的实现思路,正常文档报告是带密码的,我们要想删除某个记录或者查询记录必须要输入密码才可以,正常暴力破解几乎是不可能的,网上有那种字典破解的,那个就是智商税,然后这个工具就不需要,你只需要把带有密码的PDF拖入进来,它会自动在桌面生成一个随机名称的文档,而这个文档我们就可以随意编辑,也不需要密码,仅仅学习使用。
软件界面:
易语言程序集代码:
=============================================================
.版本 2
.支持库 edroptarget
.程序集 窗口程序集_启动窗口, , , www.eyuyan.la
.程序集变量 fileInfo, FileInfo
.程序集变量 pdfs, 文本型, , "0"
.程序集变量 命令行, 文本型, , "0"
.子程序 __启动窗口_创建完毕
.如果真 (文件是否存在 (取运行目录 () + “\PDFtox.dll”) = 假)
写到文件 (取运行目录 () + “\PDFtox.dll”, #Dll)
.如果真结束
拖放对象1.注册拖放控件 (图片框1.取窗口句柄 ())
' ***************************************************************
' 以下代码为PDF文件的右键菜单相关程序
注册右键 ()
' 以下代码是右键执行内容
' 注:只有编译后的文件才能正常执行下面代码,如果把编译后的文件添加到系统环境变量路径(即path)下,也可在命令行中执行本程序
取命令行 (命令行)
.如果真 (取数组成员数 (命令行) > 0)
pdf2jpg (命令行 [1])
结束 ()
.如果真结束
' ****************************************************************
.子程序 注册右键
.如果 (写注册项 (#根类, “*\shell\pdf2jpg\”, “PDF转JPG”) 且 写注册项 (#根类, “*\shell\pdf2jpg\command\”, 取运行目录 () + “\” + 取执行文件名 () + “ %1”))
.否则
删除注册项 (#根类, “*\shell\pdf2jpg\command”)
删除注册项 (#根类, “*\shell\pdf2jpg”)
.如果结束
.子程序 pdf2jpg, , 公开, 易语言学习资源、源码下载站:www.eyuyan.la
.参数 path, 文本型
.局部变量 文件_句柄, 整数型
.局部变量 文件_密码, 文本型
.局部变量 保存_目录, 文本型
fileInfo = 模块_文件_取信息 (path)
' 调试输出 (fileInfo.path, fileInfo.name, fileInfo.size, fileInfo.sizeT, fileInfo.fullName, fileInfo.extension, fileInfo.forlderName)
文件_句柄 = OpenPDF (fileInfo.fullName, “”)
.判断开始 (文件_句柄 = #YCANPDF_ERR_ENCRYPTED)
输入框 (“文件被加密,请输入密码”, “输入密码”, “”, 文件_密码, 1, )
文件_句柄 = OpenPDF (fileInfo.fullName, 文件_密码)
.如果真 (文件_句柄 < 0)
信息框 (“文件信息错误”, 0, “提示”, )
.如果真结束
.判断 (文件_句柄 < 0)
信息框 (“文件信息错误”, 0, “提示”, )
.默认
保存_目录 = fileInfo.path + fileInfo.name + “\”
创建目录 (保存_目录)
ExportIMG (文件_句柄, 保存_目录, “”, #YCANPDF_IMAGE_JPG, #IMAGE_DPI_300, #IMAGE_DPI_300, 1, GetPageNum (文件_句柄), &PDF_回调函数)
ClosePDF (文件_句柄)
' 信息框 (“转换完成”, 0, “提示”, _启动窗口)
运行 (“explorer ” + 保存_目录, 假, )
.判断结束
.子程序 PDF_回调函数, 整数型, , '这个函数在每一页转换之前调用
.参数 参_起始页
.参数 参_终止页
.参数 参_当前页
返回 (参_终止页 - 参_当前页 + 1)
.子程序 _拖放对象1_得到文件, , , 易语言学习资源、源码下载站:www.eyuyan.la
.参数 接收到的文件路径, 文本型
pdfs = 分割文本 (接收到的文件路径, #换行符, )
.如果真 (取数组成员数 (pdfs) > 0)
pdf2jpg (pdfs [1])
.如果真结束
=============================================================
程序集1:
=============================================================
.版本 2
.程序集 程序集1
.子程序 模块_文件_取信息, FileInfo, 公开, 易语言学习资源、源码下载站:www.eyuyan.la
.参数 参_全路径, 文本型
.局部变量 info, FileInfo
.局部变量 idx, 整数型
info.fullName = 参_全路径
idx = 倒找文本 (参_全路径, “\”, , 假)
info.path = 取文本左边 (参_全路径, idx)
info.name = 取文本中间 (参_全路径, idx + 1, 倒找文本 (参_全路径, “.”, , 假) - idx - 1)
info.extension = 取文本右边 (参_全路径, 取文本长度 (参_全路径) - 倒找文本 (参_全路径, “.”, , 假))
idx = 倒找文本 (info.path, “\”, 取文本长度 (info.path) - 1, 假)
info.forlderName = 取文本中间 (info.path, idx + 1, 取文本长度 (info.path) - idx - 1)
info.size = 取文件尺寸 (参_全路径)
info.sizeT = 内部_换算文件大小 (info.size)
返回 (info)
.子程序 内部_换算文件大小, 文本型, , 本源码来自易语言资源网(www.eyuyan.la)
.参数 fileSizeByte, 整数型
.局部变量 fileSizeMsg, 文本型
.判断开始 (fileSizeByte ≥ 1073741824)
fileSizeMsg = 到文本 (到整数 (fileSizeByte ÷ 1073741824)) + “GB”
.判断 (fileSizeByte ≥ 1048576)
fileSizeMsg = 到文本 (到整数 (fileSizeByte ÷ 1048576)) + “MB”
.判断 (fileSizeByte ≥ 1024)
fileSizeMsg = 到文本 (到整数 (fileSizeByte ÷ 1024)) + “KB”
.判断 (fileSizeByte > 0)
fileSizeMsg = 到文本 (fileSizeByte) + “ B”
.默认
.判断结束
返回 (fileSizeMsg)
==========================================================
自定义数据类型:
========================================================
.版本 2
.数据类型 FileInfo, 公开, 文件信息
.成员 fullName, 文本型, , , 全路径
.成员 path, 文本型, , , 全目录
.成员 forlderName, 文本型, , , 文件夹
.成员 name, 文本型, , , 名称
.成员 extension, 文本型, , , 扩展名
.成员 size, 整数型, , , 大小
.成员 sizeT, 文本型, , , 换算后的大小
===================================================
标签:征信,info,文件,句柄,生成器,无痕,path,fileInfo,文本 From: https://www.cnblogs.com/javakji/p/17848728.html