我需要使用命令行开关来执行“另存为文本”命令。理想情况下,我想:
这可能吗?如果是这样,那么有人知道怎么做吗?
答案 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和跨平台配合使用。