个人征信pdf无痕修改工具,一键生成电子版报告,解除密码编辑器,易语言开源代码!

发布时间 2023-11-22 12:36:31作者: 花花java大师

提前说明一下,这个不管任何文档只要带有密码的都有解除密码,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