10
votes

Utilisation des commutateurs de ligne de commande pour enregistrer un fichier PDF sous forme de texte - peut-il être fait?

J'ai besoin d'utiliser les commutateurs de ligne de commande pour exécuter la commande "Enregistrer sous forme de texte". Idéalement, je veux:

  1. Utilisez un commutateur de ligne de commande pour ouvrir un PDF
  2. Utilisez un commutateur de ligne de commande pour convertir le PDF en un fichier texte en imitant la commande 'Enregistrer sous forme de texte'.
  3. Utilisez une ligne de commande pour fermer le PDF.

    est-ce possible? Si oui, alors quelqu'un sait-il comment faire cela?


8 commentaires

Ugh, veuillez porter plus d'attention à votre marquage à l'avenir. Catégorisez votre question. N'essayez pas de le résumer. Chaque tag doit se tenir debout.


Pas sûr de quel système d'exploitation que vous utilisez, mais il y a un outil appelé "pdftotext" qui semble faire ce que vous voulez. Il est disponible sous Linux, mais il peut y avoir des outils comparables pour d'autres systèmes d'exploitation.


Je suis désolé, j'ai négligé de mentionner le système d'exploitation. Ceci est Windows. J'ai entendu parler de cet outil; Malheureusement, l'achat d'une solution n'est pas une option - nous sommes donc restés en construction. Merci quand même!


Je ne sais pas ce que "achat" signifie pour vous. pdftotext est gratuit.


Les articles libres sont définitivement meilleurs que les achats, mais dans notre environnement, cela prendrait quelques semaines pour que cela soit approuvé pour une utilisation sur ce site. C'est pourquoi la route de la ligne de commande serait la meilleure - aucun formulaire à remplir, sans attendre pourquoi une équipe de test examine le produit, etc.


Terrain. Quel logiciel avez-vous disponible? Existe-t-il une installation Python (+ PDF Outils) pour script de ceci? Sinon, je ne pourrai pas aider.


Oui, je viens de vérifier la liste logicielle approuvée - Python 2.5.2 est approuvée


Avez-vous trouvé la réponse pour cela?


4 Réponses :


2
votes

Je ne comprends pas pourquoi vous ne voudriez pas utiliser le logiciel libre (non freeware), pdftotext est la solution idéale. Toutefois, si vous souhaitez simplement ouvrir et enregistrer le PDF de manière automatisée à l'aide de l'interface graphique Windows, vous pouvez utiliser VBScript et la commande SendKeys.

Il suffit d'utiliser pdftotext cependant, ce serait beaucoup plus fiable et ne vous coûtera pas une boîte entière.


2 commentaires

Merci - je pensais à faire la méthode "Sendkeys" mais je voulais voir s'il y avait quelque chose de rapide et sale. Oui, notre environnement place des restrictions strictes sur des logiciels acceptables. L'utilisation de Python (approuvé) peut également être une option.


+1 - Pour il faut toujours utiliser le site Google "Site: http: //stackoverflow.com" << WordtOfind >> Pour économiser environ 5 minutes de publicité de la merde, car les gars intelligents comme vous avez déjà posté la réponse ...



4
votes

n'utilisez pas cmd; Utilisez AutoIt. Très facile à faire et prend quelques lignes

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


0 commentaires

0
votes

Je pense que le dessous de VBScript devrait faire l'affaire. Il faudra tous les fichiers .pdf dans un emplacement de dossier donné et les enregistrera sous forme de fichiers .txt. Un autre majeur Strong> Bummer est que cela ne fonctionne que si votre machine n'est pas verrouillée car elle utilise la commande SendKeys. Si quelqu'un a une solution qui fonctionne pendant que un ordinateur est verrouillé, envoyez-le mon chemin!

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 = objFSO.BuildPath(objStartFolder, objFile.Name)
  fullname_txt = objFSO.BuildPath(objStartFolder, file + ".txt")

  Set objFSO = CreateObject("Scripting.FileSystemObject")

  If extension = ".pdf" And Not objFSO.FileExists(fullname_txt) Then
      WScript.Echo fullname
    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


0 commentaires

4
votes

Peut-être que vous pouvez essayer ceci: https://github.com/luochen1990/nodejs -Suel-pdf-parser

Il s'agit d'un package NPM et vous devez installer Nodejs (et NPM) pour l'utiliser. P>

Il peut être utilisé comme outil de ligne de commande:

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


0 commentaires