2009-07-28 3 views
6

Necesito usar los interruptores de línea de comando para ejecutar el comando 'Guardar como texto'. Idealmente, quiero:Uso de los interruptores de línea de comando para guardar un PDF como texto - ¿Se puede hacer?

  1. uso de un interruptor de línea de comandos para abrir un PDF
  2. utilizar un modificador de línea de comandos para convertir el PDF a un archivo de texto mediante la imitación de la 'Guardar como texto' comando.
  3. utilice una línea de comando para cerrar el PDF.

¿Esto es posible? Si es así, ¿alguien sabe cómo hacer esto?

+1

Ugh, preste más atención a su etiquetado en el futuro. Clasifica tu pregunta _No intente resumirlo. Cada etiqueta debe mantenerse por sí misma. –

+1

No estoy seguro de qué sistema operativo está ejecutando, pero hay una herramienta llamada "pdftotext" que parece hacer lo que quiere. Está disponible en Linux, pero puede haber herramientas comparables para otros sistemas operativos. –

+0

Lo siento, olvidé mencionar el sistema operativo. Esto es Windows. He oído hablar de esta herramienta; Desafortunadamente, comprar una solución no es una opción, por lo tanto, nos queda construir uno. ¡Gracias! –

Respuesta

2

No entiendo por qué no desea utilizar software gratuito (no freeware), pdftotext es la solución ideal. Sin embargo, si solo desea abrir y guardar el PDF de manera automática utilizando la GUI de Windows, puede usar vbscript y el comando sendkeys.

Simplemente use pdftotext sin embargo, sería mucho más confiable y no le costará una caja entera.

+0

Gracias - Estaba pensando en hacer el método 'SENDKEYS', pero quería ver si había algo rápido y sucio. Sí, nuestro entorno impone restricciones estrictas al software aceptable. Usar Python (que está aprobado) también puede ser una opción. –

+0

¿Ya obtuvo una solución? –

+2

+1 - para uno siempre debe usar el "sitio: http: //stackoverflow.com" de google: <> para guardar unos 5 minutos de publicidades de basura, porque los tipos inteligentes como usted ya han publicado la respuesta ... –

4

No utilice CMD; usa AutoIt. Muy fácil de hacer y toma algunas líneas

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

Creo que el siguiente VBscript debería hacer el truco. Tomará todos los archivos .pdf en una ubicación de carpeta determinada y los guardará como archivos .txt. Uno mayor bummer es que solo funciona si su máquina no está bloqueada ya que usa el comando SendKeys. Si alguien tiene una solución que funciona mientras una computadora está bloqueada, por favor envíela a mi manera.

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 
Cuestiones relacionadas