使用命令行开关将PDF另存为文本 - 可以这样做吗?

时间:2009-07-28 19:09:46

标签: windows pdf automation

我需要使用命令行开关来执行“另存为文本”命令。理想情况下,我想:

  1. 使用命令行开关打开PDF
  2. 使用命令行开关通过模仿“另存为文本”命令将PDF转换为文本文件。
  3. 使用命令行关闭PDF。
  4. 这可能吗?如果是这样,那么有人知道怎么做吗?

4 个答案:

答案 0 :(得分:4)

不要使用CMD;使用AutoIt。很容易做,需要几行

Run("file.pdf")
winwait("Adobe")
send(?);; whatever commands necessary to save as text
send("{enter}")
send("!{F4}")

答案 1 :(得分:2)

我不明白为什么你不想使用免费软件(不是免费软件),pdftotext是理想的解决方案。 但是,如果您只是想使用Windows GUI以自动方式实际打开和保存PDF,则可以使用vbscript和sendkeys命令。

只是使用pdftotext,它会更可靠,不会花费你整箱。

答案 2 :(得分:0)

我认为下面的VBscript应该可以解决问题。它将获取给定文件夹位置中的所有.pdf文件,并将它们另存为.txt文件。一个主要无赖是它只有在你的机器没有锁定时才有效,因为它使用SendKeys命令。如果有人在计算机锁定时有解决方案,请以我的方式发送!

Set objFSO = CreateObject("Scripting.FileSystemObject")
objStartFolder = "PATH_OF_ALL_PDFS_YOU_WANT_TO_CONVERT_HERE"
Set objFolder = objFSO.GetFolder(objStartFolder)

Set colFiles = objFolder.Files  
For Each objFile in colFiles
    extension = Mid(objFile.Name,len(objFile.Name)-3,4)
    file = Mid(objFile.Name,1,len(objFile.Name)-4)
    fullname = """PATH_OF_ALL_PDFS_YOU_WANT_TO_CONVERT_HERE" + objFile.Name + """"
    fullname_txt = "PATH_OF_ALL_PDFS_YOU_WANT_TO_CONVERT_HERE" + file + ".txt"

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    if extension = ".pdf" and not objFSO.FileExists(file+".txt") then 
        set WshShell = WScript.CreateObject("WScript.Shell")
            WshShell.Run fullname
            WScript.Sleep 1000
            WshShell.SendKeys "%"
                WScript.Sleep 100
                WshShell.SendKeys "f"
                WScript.Sleep 100
                WshShell.SendKeys "h"
                WScript.Sleep 100
                WshShell.SendKeys "x"
                WScript.Sleep 300
                WshShell.SendKeys "{ENTER}"

            count = 0 
    'this little step prevents the loop from moving on to the next .pdf before the conversion to .txt is complete
            Do While i=0 and count < 100
            On Error Resume Next
            Set fso = CreateObject("Scripting.FileSystemObject")
            Set MyFile = fso.OpenTextFile(fullname_txt,8)
            If Err.Number = 0 Then
                i = 1       
            End If
            count = count + 1
            Wscript.Sleep 20000
        Loop    
    end if
Next

答案 3 :(得分:0)

也许您可以尝试以下方法:https://github.com/luochen1990/nodejs-easy-pdf-parser

这是一个npm软件包,您需要安装nodejs(和npm)才能使用它。

它可以用作命令行工具:

npm install -g easy-pdf-parser
pdf2text test.pdf > test.txt

此工具将按y坐标对文本行进行排序,因此在大多数情况下它都很好用。而且它也可以与unicode和跨平台配合使用。