处理知识库文件_编写powershell脚本文件_批量转换其他格式文件到pdf文件---人工智能工作笔记0249

发布于:2025-06-03 ⋅ 阅读:(27) ⋅ 点赞:(0)

   最近在做部门知识库,选用的dify,作为rag的工具,但是经过多个对比,最后发现,

比较好用的是,纳米搜索,但是可惜纳米搜索无法在内网使用,无法把知识库放到本地,导致

有信息安全问题无法使用。

    再则,知识库文件导入的时候,测试发现excel文件,直接导入,不如直接转换成pdf文件导入效果要好,纳米搜索对文档的解析,效果更好一些。但是转换pdf文件,如果使用微软的excel,效果不好,只能转换当前页,使用wps效果很好,可以转换所有页,但是,一个一个的去转换效果太慢了。所以自己就做了一个批量,把excel文件转换为pdf的脚本,其实就是一个powershell的脚本文件,直接右键运行就可以了。运行之前,先打开一个excel文件,待处理的。

    然后等待脚本自动处理就可以了。

# 利用wps自动保存为pdf
# 做知识库用,知识库中对pdf的支持会更好一些。AutoKeyPress.ps1
Add-Type -TypeDefinition @'
using System;
using System.Runtime.InteropServices;

# Mouse鼠标操作
public class MouseAction {
    [DllImport("user32.dll")]
    public static extern bool SetCursorPos(int X, int Y);

    [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
    public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, UIntPtr dwExtraInfo);

    private const uint MOUSEEVENTF_LEFTDOWN = 0x02;
    private const uint MOUSEEVENTF_LEFTUP = 0x04;
    private const uint MOUSEEVENTF_RIGHTDOWN = 0x08;
    private const uint MOUSEEVENTF_RIGHTUP = 0x10;

    public static void LeftClick() {
        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, UIntPtr.Zero);
    }

    public static void RightClick() {
        mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, UIntPtr.Zero);
    }

    public static void LeftClickAt(int x, int y) {
        SetCursorPos(x, y);
        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, UIntPtr.Zero);
    }

    public static void RightClickAt(int x, int y) {
        SetCursorPos(x, y);
        mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, UIntPtr.Zero);
    }
}
'@


$WShell = New-Object -ComObject wscript.shell

while($true) {
    Start-Sleep -Seconds 4

    # Alt+F  先打开一个文件excel,然后,在文件列表选中最后一个,他会一个个向上处理
    # 打开文件以后,首先按下alt+f 打开文件 菜单
    $WShell.SendKeys("%f")
    Start-Sleep -Seconds 2
    
    # A 按下A,选中另存为
    $WShell.SendKeys("a")
    Start-Sleep -Seconds 1
    
    # M 按下M,打开另存为的窗口
    $WShell.SendKeys("m")
    Start-Sleep -Seconds 1
    
    # Tab 然后tab选中要保存的格式选项
    $WShell.SendKeys("{TAB}")
    Start-Sleep -Seconds 1
    
    # End 找到pdf格式
    $WShell.SendKeys("{END}")
    Start-Sleep -Seconds 1
    
    # Alt+S 保存pdf文件开始
    $WShell.SendKeys("%s")
    Start-Sleep -Seconds 6

    # Enter 关闭 pdf保存完成窗口 保存以后关闭pdf窗口
    $WShell.SendKeys("{ENTER}")
    Start-Sleep -Seconds 1

    #关闭当前文档 处理以后 关闭当前文档
    $WShell.SendKeys("^w")
    Start-Sleep -Seconds 1

    #然后按下n,关闭当前文档
    $WShell.SendKeys("n")
    Start-Sleep -Seconds 1

    # Alt+Tab
    # 然后按下alt+tab这个不用了,之前用的
    #$WShell.SendKeys("%{TAB}")
    #Start-Sleep -Seconds 3

    #然后打开运行窗口
    # 创建 Shell.Application 对象并调用 FileRun 方法
    # 这里是打开运行,运行中注意,默认要显示需要打开的文件夹
    $shell = New-Object -ComObject "Shell.Application"
    $shell.FileRun()
    Start-Sleep -Seconds 1

    #这里就打开对应的运行显示的文件夹 运行中要提前把对应的文件夹路径贴里面去
    $WShell.SendKeys("{ENTER}")
    Start-Sleep -Seconds 1

    #按下鼠标左键,选中当前的文件
    # 左键单击当前位置
    #[MouseAction]::LeftClick()
    # 发送Alt+D(定位到地址栏)
    #这个是为了定位到文件列表 
    $wshell.SendKeys("%d")
    Start-Sleep -Milliseconds 200


    # 发送3次Tab键(切换到文件列表)
    $wshell.SendKeys("{TAB}")
    Start-Sleep -Milliseconds 100
    $wshell.SendKeys("{TAB}")
    Start-Sleep -Milliseconds 100
    $wshell.SendKeys("{TAB}")

    #向上选择 处理下一个文件
    # Up Arrow
    $WShell.SendKeys("{UP}")
    Start-Sleep -Seconds 2
    
    #按下enter打开下一个文件
    # Enter
    $WShell.SendKeys("{ENTER}")
    
    # 停顿2秒
    Start-Sleep -Seconds 2
}


网站公告

今日签到

点亮在社区的每一天
去签到