提前说明一下,这个不管任何文档只要带有密码的都有解除密码,PDF是最常见的,比如征信报告,我们改内容删记录,加记录都是需要密码的,PS的肯定不行,因为默认导出来的是PDf格式,而网上有一些暴力破解都是字典破解的,估计你破解一个月都破解不出来,这个工具很简单,只需要将带有密码的PDF文件导入进来,它会自动生成到指定的目录里面【需要手动选择目录】生成的文档可以任意修改内容,密码已经被清除的了,软件的实现是用易语言开发的,下面是界面和代码,仅供学习!
软件的界面:
程序集代码:
============================================================
.版本 2
.支持库 shell
.支持库 EThread
.支持库 iext
.支持库 spec
.程序集 窗口程序集_启动窗口, , , 本源码来自易语言资源网(www.eyuyan.la)
.程序集变量 集_路径数组, 文本型, , "0"
.程序集变量 集_目录路径, 文本型
.程序集变量 表项信息, 表项结构信息
.子程序 __启动窗口_创建完毕
皮肤_初始化 (65)
转换指向 = 1
编辑框_输出目录.内容 = 取特定目录 (3)
.如果真 (文件是否存在 (取运行目录 () + “\PDFtox.dll”))
写到文件 (取运行目录 () + “\PDFtox.dll”, #Dll)
.如果真结束
.子程序 __启动窗口_将被销毁
.子程序 _图片框_pdf转1_鼠标左键被按下, 逻辑型, , 易语言学习资源、源码下载站:www.eyuyan.la
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
单选_转换方向文字显示 (1)
.子程序 _图片框_pdf转2_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
单选_转换方向文字显示 (2)
.子程序 _标签_pdf转1_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
单选_转换方向文字显示 (1)
.子程序 _标签_pdf转2_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
单选_转换方向文字显示 (2)
.子程序 _图片框_添加文件_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
启动线程 (&添加文件_程序, , )
.子程序 _标签_添加文件_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
启动线程 (&添加文件_程序, , )
.子程序 添加文件_程序
.局部变量 i, 整数型
.局部变量 文件_路径, 文本型
.局部变量 局_文件名, 文本型
.局部变量 目录_路径, 文本型
.局部变量 PDF_句柄, 整数型
.局部变量 PDF_总页数, 整数型
.局部变量 PDF_状态提示, 文本型
.局部变量 m, 整数型
清除数组 (集_路径数组)
图片框_添加文件.禁止 = 真
标签_添加文件.禁止 = 真
超级列表框_文件.全部删除 ()
集_路径数组 = 多文件对话框 (“请选择需要转换的PDF文件(按住Ctrl键多选)”, “PDF文件|*.pdf”, , 取特定目录 (3), , )
.计次循环首 (取数组成员数 (集_路径数组), i)
文件_路径 = 集_路径数组 [i]
.如果真 (寻找文本 (取文本右边 (文件_路径, 3), “pdf”, , 真) ≠ -1)
局_文件名 = 取文本右边 (文件_路径, 取文本长度 (文件_路径) - 倒找文本 (文件_路径, “\”, , 假))
目录_路径 = 子文本替换 (文件_路径, 局_文件名, “”, , , 真)
PDF_句柄 = OpenPDF (文件_路径, “”)
PDF_总页数 = GetPageNum (PDF_句柄)
.如果 (PDF_句柄 = #YCANPDF_ERR_ENCRYPTED)
PDF_状态提示 = “PDF需密码”
.否则
PDF_状态提示 = “PDF待转换”
.如果结束
m = 超级列表框_文件.插入表项 (, , , , , )
超级列表框_文件.置标题 (m, 0, 目录_路径)
超级列表框_文件.置标题 (m, 1, 到文本 (m + 1))
超级列表框_文件.置标题 (m, 2, 局_文件名)
超级列表框_文件.置标题 (m, 3, 到文本 (四舍五入 (文件_取大小 (文件_路径) ÷ 1024, 2)) + “kb”)
超级列表框_文件.置标题 (m, 4, PDF_状态提示)
超级列表框_文件.置标题 (m, 5, “1”)
超级列表框_文件.置标题 (m, 6, 到文本 (PDF_总页数))
超级列表框_文件.置图片 (m, 7, 0)
超级列表框_文件.置图片 (m, 8, 1)
超级列表框_文件.置图片 (m, 9, 2)
超级列表框_文件.置图片 (m, 10, 3)
.如果真结束
.计次循环尾 ()
图片框_添加文件.禁止 = 假
标签_添加文件.禁止 = 假
.子程序 _图片框_添加目录_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
启动线程 (&目录_枚举程序, , )
.子程序 _标签_添加目录_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
启动线程 (&目录_枚举程序, , )
.子程序 目录_枚举程序
.局部变量 i, 整数型
.局部变量 文件_路径, 文本型
.局部变量 局_文件名, 文本型
.局部变量 目录_路径, 文本型
.局部变量 PDF_句柄, 整数型
.局部变量 PDF_总页数, 整数型
.局部变量 PDF_状态提示, 文本型
.局部变量 m, 整数型
图片框_添加目录.禁止 = 真
标签_添加目录.禁止 = 真
清除数组 (集_路径数组)
集_目录路径 = 目录_浏览 (, , , , , )
文件_枚举 (集_目录路径, “PDF文件|*.pdf”, 集_路径数组, 真, 假, 假)
.计次循环首 (取数组成员数 (集_路径数组), i)
文件_路径 = 集_路径数组 [i]
.如果真 (寻找文本 (取文本右边 (文件_路径, 3), “pdf”, , 真) ≠ -1)
局_文件名 = 取文本右边 (文件_路径, 取文本长度 (文件_路径) - 倒找文本 (文件_路径, “\”, , 假))
目录_路径 = 子文本替换 (文件_路径, 局_文件名, “”, , , 真)
PDF_句柄 = OpenPDF (文件_路径, “”)
PDF_总页数 = GetPageNum (PDF_句柄)
.如果 (PDF_句柄 = #YCANPDF_ERR_ENCRYPTED)
PDF_状态提示 = “PDF需密码”
.否则
PDF_状态提示 = “PDF待转换”
.如果结束
m = 超级列表框_文件.插入表项 (, , , , , )
超级列表框_文件.置标题 (m, 0, 目录_路径)
超级列表框_文件.置标题 (m, 1, 到文本 (m + 1))
超级列表框_文件.置标题 (m, 2, 局_文件名)
超级列表框_文件.置标题 (m, 3, 到文本 (四舍五入 (文件_取大小 (文件_路径) ÷ 1024, 2)) + “kb”)
超级列表框_文件.置标题 (m, 4, PDF_状态提示)
超级列表框_文件.置标题 (m, 5, “1”)
超级列表框_文件.置标题 (m, 6, 到文本 (PDF_总页数))
超级列表框_文件.置图片 (m, 7, 0)
超级列表框_文件.置图片 (m, 8, 1)
超级列表框_文件.置图片 (m, 9, 2)
超级列表框_文件.置图片 (m, 10, 3)
ClosePDF (PDF_句柄)
.如果真结束
.计次循环尾 ()
图片框_添加目录.禁止 = 假
标签_添加目录.禁止 = 假
.子程序 _图片框_清空列表_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
超级列表框_文件.全部删除 ()
.子程序 _标签_清空列表_鼠标左键被按下, 逻辑型, , www.eyuyan.la
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
超级列表框_文件.全部删除 ()
.子程序 _图片框_原目录_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
图片框_原目录.图片 = #单选_选中
图片框_自定义目录.图片 = #单选_未选
.子程序 _标签_原目录_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
图片框_原目录.图片 = #单选_选中
图片框_自定义目录.图片 = #单选_未选
.子程序 _图片框_自定义目录_鼠标左键被按下, 逻辑型, , www.eyuyan.la
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
图片框_原目录.图片 = #单选_未选
图片框_自定义目录.图片 = #单选_选中
.子程序 _标签_自定义目录_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
图片框_原目录.图片 = #单选_未选
图片框_自定义目录.图片 = #单选_选中
.子程序 _图片框_浏览目录_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
编辑框_输出目录.内容 = 目录_浏览 (, , , , , ) + “\”
.子程序 _图片框_打开目录_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
执行 (4, 编辑框_输出目录.内容, , , 2)
.子程序 _按钮_p2w_被单击
转换指向 = 1
单选_转换方向文字显示 (1)
.子程序 _按钮_p2e_被单击
转换指向 = 2
单选_转换方向文字显示 (1)
.子程序 _按钮_p2ppt_被单击
转换指向 = 3
单选_转换方向文字显示 (1)
.子程序 _按钮_p2jpg_被单击
转换指向 = 4
单选_转换方向文字显示 (1)
.子程序 _按钮_p2txt_被单击
转换指向 = 5
单选_转换方向文字显示 (1)
.子程序 单选_转换方向文字显示
.参数 参数一, 整数型
.如果真 (转换指向 = 1)
标签_pdf转1.标题 = “转出DOC格式”
标签_pdf转2.标题 = “转出DOCX格式”
.如果真结束
.如果真 (转换指向 = 2)
标签_pdf转1.标题 = “转出XLS格式”
标签_pdf转2.标题 = “转出XLSX格式”
.如果真结束
.如果真 (转换指向 = 3)
标签_pdf转1.标题 = “转出PPT格式”
标签_pdf转2.标题 = “转出PPTX格式”
.如果真结束
.如果真 (转换指向 = 4)
标签_pdf转1.标题 = “转出JPG格式”
标签_pdf转2.标题 = “转出PNG格式”
.如果真结束
.如果 (转换指向 = 5)
图片框_pdf转2.可视 = 假
标签_pdf转2.可视 = 假
标签_pdf转1.标题 = “转出TXT文本”
.否则
图片框_pdf转2.可视 = 真
标签_pdf转2.可视 = 真
.如果结束
.如果 (参数一 = 1)
图片框_pdf转1.图片 = #单选_选中
图片框_pdf转2.图片 = #单选_未选
.否则
图片框_pdf转1.图片 = #单选_未选
图片框_pdf转2.图片 = #单选_选中
.如果结束
.子程序 _超级列表框_文件_被双击, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
.局部变量 计次, 整数型
.局部变量 点击列索引, 整数型
.局部变量 点击列左列群宽, 整数型
.局部变量 i, 整数型
.局部变量 文件_路径, 文本型
i = 超级列表框_文件.现行选中项
.如果真 (i = -1)
返回 ()
.如果真结束
.计次循环首 (超级列表框_文件.取列数 (), 计次)
.如果真 (横向位置 > 点击列左列群宽 且 横向位置 < 点击列左列群宽 + 超级列表框_文件.取列宽 (计次 - 1))
点击列索引 = 计次 - 1
跳出循环 ()
.如果真结束
点击列左列群宽 = 点击列左列群宽 + 超级列表框_文件.取列宽 (计次 - 1)
.计次循环尾 ()
文件_路径 = 超级列表框_文件.取标题 (i, 0) + 超级列表框_文件.取标题 (i, 2)
.如果真 (点击列索引 = 7) ' 打开文件
执行 (4, 文件_路径, , , )
.如果真结束
.如果真 (点击列索引 = 8) ' 打开文件夹
执行 (4, 超级列表框_文件.取标题 (i, 0), , , )
.如果真结束
.如果真 (点击列索引 = 9) ' 预览
' 没好的库
.如果真结束
.如果真 (点击列索引 = 10) ' 删除
删除文件 (超级列表框_文件.取标题 (i, 0) + 超级列表框_文件.取标题 (i, 2))
超级列表框_文件.删除表项 (i)
.如果真结束
.如果真 (点击列索引 = 5) ' 最小页数字修改
超级列表框_文件.禁止重画 ()
编辑框1.左边 = 点击列左列群宽 + 3
编辑框1.顶边 = 129 + i × 20
编辑框1.内容 = 超级列表框_文件.取标题 (i, 5)
编辑框1.可视 = 真
编辑框1.获取焦点 ()
编辑框1.被选择字符数 = -1
表项信息.行 = i
表项信息.列 = 5
.如果真结束
.如果真 (点击列索引 = 6) ' 最大页数字修改
超级列表框_文件.禁止重画 ()
编辑框1.左边 = 点击列左列群宽 + 3
编辑框1.顶边 = 129 + i × 20
编辑框1.内容 = 超级列表框_文件.取标题 (i, 6)
编辑框1.可视 = 真
编辑框1.获取焦点 ()
编辑框1.被选择字符数 = -1
表项信息.行 = i
表项信息.列 = 6
.如果真结束
.子程序 _编辑框1_放开某键, 逻辑型
.参数 键代码, 整数型
.参数 功能键状态, 整数型
.如果真 (键代码 = #回车键)
_编辑框1_失去焦点 ()
.如果真结束
.子程序 _编辑框1_失去焦点
.局部变量 表_小值, 整数型
.局部变量 表_大值, 整数型
.局部变量 写_数值, 整数型
表_小值 = 到整数 (超级列表框_文件.取标题 (表项信息.行, 5))
表_大值 = 到整数 (超级列表框_文件.取标题 (表项信息.行, 6))
写_数值 = 到整数 (编辑框1.内容)
.如果真 (表项信息.列 = 5)
.如果真 (写_数值 < 1)
编辑框1.可视 = 假
信息框 (“开始页从1开始!”, 0, , )
返回 ()
.如果真结束
.如果真 (写_数值 > 表_大值)
编辑框1.可视 = 假
信息框 (“开始页不能大于结束页!”, 0, , )
返回 ()
.如果真结束
.如果真结束
.如果真 (表项信息.列 = 6)
.如果真 (写_数值 < 表_小值)
编辑框1.可视 = 假
信息框 (“结束页不能小于开始页!”, 0, , )
返回 ()
.如果真结束
.如果真 (写_数值 > 表_大值)
编辑框1.可视 = 假
信息框 (“结束页不能增加数值!”, 0, , )
返回 ()
.如果真结束
.如果真结束
超级列表框_文件.置标题 (表项信息.行, 表项信息.列, 编辑框1.内容)
编辑框1.可视 = 假
超级列表框_文件.允许重画 ()
表项信息.行 = -1
表项信息.列 = -1
.子程序 _按钮_批量转换_被单击
启动线程 (&批量转换_PDF2, , )
.子程序 批量转换_PDF2
.局部变量 i, 整数型
.局部变量 文件_路径, 文本型
.局部变量 文件_句柄, 整数型
.局部变量 保存_路径, 文本型
.局部变量 保存_目录, 文本型
.局部变量 转换_结果, 整数型
.局部变量 局_文件数组, 文本型, , "0"
.局部变量 T, 整数型
.局部变量 txt, 文本型
.局部变量 文件_名称, 文本型
按钮_批量转换.禁止 = 真
.计次循环首 (超级列表框_文件.取表项数 (), i)
文件_路径 = 超级列表框_文件.取标题 (i - 1, 0)
文件_名称 = 超级列表框_文件.取标题 (i - 1, 2)
保存_目录 = 取文本左边 (文件_名称, 取文本长度 (文件_名称) - 4)
文件_句柄 = OpenPDF (文件_路径 + 文件_名称, “”)
.如果真 (文件_句柄 = -2)
超级列表框_文件.置标题 (i - 1, 4, “文件被加密”)
到循环尾 ()
.如果真结束
.如果 (图片框_原目录.图片 = #单选_选中)
保存_路径 = 文件_路径 + 保存_目录 + “\”
.否则
保存_路径 = 编辑框_输出目录.内容 + 保存_目录 + “\”
.如果结束
.如果真 (目录_是否存在 (保存_路径) = 假)
创建目录 (保存_路径)
.如果真结束
.如果真 (转换指向 = 1) ' pdf2word
.如果 (图片框_pdf转1.图片 = #单选_选中)
保存_路径 = 保存_路径 + 保存_目录 + “.doc”
.否则
保存_路径 = 保存_路径 + 保存_目录 + “.docx”
.如果结束
转换_结果 = ExportHTM (文件_句柄, 保存_路径)
.如果真结束
.如果真 (转换指向 = 2) ' pdf2xlsx
.如果 (图片框_pdf转1.图片 = #单选_选中)
保存_路径 = 保存_路径 + 保存_目录 + “.xls”
.否则
保存_路径 = 保存_路径 + 保存_目录 + “.xlsx”
.如果结束
转换_结果 = ExportHTM (文件_句柄, 保存_路径)
.如果真结束
.如果真 (转换指向 = 3) ' pdf2ppt 无效无效无效
.如果 (图片框_pdf转1.图片 = #单选_选中)
保存_路径 = 保存_路径 + 保存_目录 + “.ppt”
.否则
保存_路径 = 保存_路径 + 保存_目录 + “.pptx”
.如果结束
' 转换_结果 = ExportHTM (局_PDF句柄, 保存_路径) ‘无效无效无效
转换_结果 = 1
.如果真结束
.如果真 (转换指向 = 4)
超级列表框_文件.置标题 (i - 1, 4, “转换中...”)
.如果真 (转换指向 = 4)
.如果 (图片框_pdf转1.图片 = #单选_选中)
转换_结果 = ExportIMG (文件_句柄, 保存_路径, “”, 2, #IMAGE_DPI_600, #IMAGE_DPI_600, 到整数 (超级列表框_文件.取标题 (i - 1, 5)), 到整数 (超级列表框_文件.取标题 (i - 1, 6)), &PDF_回调函数)
.否则
转换_结果 = ExportIMG (文件_句柄, 保存_路径, “”, 4, #IMAGE_DPI_600, #IMAGE_DPI_600, 到整数 (超级列表框_文件.取标题 (i - 1, 5)), 到整数 (超级列表框_文件.取标题 (i - 1, 6)), &PDF_回调函数)
.如果结束
.如果 (转换_结果 = 到整数 (超级列表框_文件.取标题 (i - 1, 6)) - 1)
转换_结果 = 0
.否则
转换_结果 = -1
.如果结束
.如果真结束
.如果真结束
.如果真 (转换指向 = 5) ' 识别图片文字
超级列表框_文件.置标题 (i - 1, 4, “转换中...”)
ExportIMG (文件_句柄, 保存_路径, “”, 4, #IMAGE_DPI_100, #IMAGE_DPI_100, 到整数 (超级列表框_文件.取标题 (i - 1, 5)), 到整数 (超级列表框_文件.取标题 (i - 1, 6)), &PDF_回调函数)
文件_枚举 (保存_路径, “PNG文件|*.png”, 局_文件数组, 真, 假, 假)
.计次循环首 (取数组成员数 (局_文件数组), T)
txt = txt + 百度_orc识别 (局_文件数组 [T])
删除文件 (局_文件数组 [T])
.计次循环尾 ()
.如果 (写到文件 (保存_路径 + “\” + 到文本 (文件_名称) + “.txt”, 到字节集 (txt)))
转换_结果 = 0
.否则
转换_结果 = -1
.如果结束
.如果真结束
.如果 (转换_结果 = 0)
超级列表框_文件.置标题 (i - 1, 4, “转换成功”)
.否则
超级列表框_文件.置标题 (i - 1, 4, “转换失败”)
.如果结束
ClosePDF (文件_句柄)
.计次循环尾 ()
按钮_批量转换.禁止 = 假
.子程序 PDF_回调函数, 整数型, , '这个函数在每一页转换之前调用
.参数 参_起始页
.参数 参_终止页
.参数 参_当前页
返回 (参_终止页 - 参_当前页 + 1)
.子程序 百度_orc识别, 文本型
.参数 图片路径, 文本型
.局部变量 图片, 字节集
.局部变量 ret, 文本型
.局部变量 json, 类_json
.局部变量 i, 整数型
.局部变量 words, 文本型
图片 = 读入文件 (图片路径)
ret = 编码_Utf8到Ansi (网页_访问_对象 (“https://cloud.baidu.com/aidemo”, 1, “type=webimage&image=data” + 编码_URL编码 (“:image/png;base64,” + 编码_BASE64编码 (图片), , 真)))
json.解析 (ret)
.计次循环首 (json.成员数 (“data['words_result']”), i)
words = words + json.取通用属性 (“data['words_result'][” + 到文本 (i - 1) + “].words”) + #换行符
.计次循环尾 ()
调试输出 (ret, words)
返回 (words)
.子程序 __删除_被选择
.局部变量 i, 整数型
i = 超级列表框_文件.现行选中项
.如果真 (i < 0)
返回 ()
.如果真结束
删除文件 (超级列表框_文件.取标题 (i, 0) + 超级列表框_文件.取标题 (i, 2))
超级列表框_文件.删除表项 (i)
.子程序 __打开_被选择
.局部变量 i, 整数型
i = 超级列表框_文件.现行选中项
.如果真 (i < 0)
返回 ()
.如果真结束
执行 (4, 超级列表框_文件.取标题 (i, 0) + 超级列表框_文件.取标题 (i, 2), , , )
.子程序 __添加_被选择
启动线程 (&添加文件_程序, , )
.子程序 _超级列表框_文件_鼠标右键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
弹出菜单 (_菜单, 取鼠标水平位置 (), 取鼠标垂直位置 ())
==============================================================
————————————————
版权声明:本文为CSDN博主「新壳软件」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_15159657/article/details/134550646