web-dev-qa-db-fra.com

Impression de fichiers PDF à partir de la ligne de commande Windows

J'essaie d'imprimer tous les fichiers PDF dans le répertoire en cours. Lorsque j'appelle ce script bash dans cmd (singlepdf.sh): '"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"' /t Gemeinde_348_BioID_842_alt.pdf tout fonctionne correctement.

Lorsque vous appelez multiplepdfs.sh avec ce contenu:

declare -a pdfs=(*.pdf)

for pdf in ${pdfs[@]}; do
  echo -e "\nprinting **$pdf** with AcroRd32.exe...\n"
  '"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"' /t $pdf
  sleep 3
done

L'écho montre que les fichiers sont correctement adressés dans la boucle - mais j'obtiens l'erreur "C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe": No such file or directory 

Quelqu'un peut-il aider avec ce problème?

Edit: BTW, j'ai msys mingw installé

11
Kay

Je sais que c’est une vieille question, mais j’ai été confronté au même problème récemment et aucune des réponses n’a fonctionné pour moi:

  • Impossible de trouver une ancienne version de Foxit Reader
  • Comme @pilkch a déclaré 2Printer ajoute une page de rapport
  • Adobe Reader ouvre une interface graphique 

Après avoir cherché un peu plus, j'ai trouvé ceci: http://www.columbia.edu/~em36/pdftoprinter.html .

C'est un simple exe que vous appelez avec le nom de fichier et qui est imprimé sur l'imprimante par défaut (ou sur celle que vous spécifiez) . Depuis le site:

PDFtoPrinter est un programme permettant d’imprimer des fichiers PDF à partir de la ligne de commande Windows. Le programme est généralement conçu pour la ligne de commande Windows et pour une utilisation avec l’émulateur vDos DOS.

Pour imprimer un fichier PDF sur l’imprimante Windows par défaut, utilisez cette commande:

PDFtoPrinter.exe filename.pdf

Pour imprimer sur une imprimante spécifique, ajoutez le nom de l'imprimante entre guillemets:

PDFtoPrinter.exe filename.pdf "Name of Printer"

Si vous souhaitez imprimer sur une imprimante réseau, utilisez le nom qui apparaît dans les boîtes de dialogue d'impression Windows, comme ceci (et notez les deux barres obliques inverses au début du nom et la seule barre oblique inverse après le nom du serveur):

PDFtoPrinter.exe filename.pdf "\\SERVER\PrinterName"
13
scripts

J'ai eu deux problèmes avec Acrobat Reader pour cette tâche.

  1. L'API de ligne de commande n'est pas officiellement prise en charge. Par conséquent, elle peut être modifiée ou supprimée sans avertissement.
  2. Envoyer une commande d'impression à Reader charge l'interface graphique, avec apparemment aucun moyen de l'en empêcher. J'avais besoin que le processus soit transparent pour l'utilisateur.

Je suis tombé sur ce blog , qui suggère d'utiliser Foxit Reader . Foxit Reader est gratuit, l'API est presque identique à Acrobat Reader, mais elle est documentée de manière cruciale et ne charge pas l'interface graphique pour les tâches d'impression.

Un mot d’avertissement, ne faites pas que cliquer sur le processus d’installation sans faire attention, il essaye également d’installer un logiciel indépendant. Pourquoi les éditeurs de logiciels le font-ils encore ???

7
kim3er

Première réponse - je voulais enfin redonner à une communauté serviable ...

Je voulais ajouter cela aux réponses des personnes qui recherchaient toujours une solution simple. J'utilise un produit gratuit de Foxit Software - FoxItReader.
Voici le lien vers la version qui fonctionne avec l'impression silencieuse - les versions plus récentes de la fonctionnalité d'impression silencieuse ne fonctionne toujours pas . FoxitReader623.815_Setup

FOR %%f IN (*.pdf) DO ("C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe" /t %%f "SPST-SMPICK" %%f & del %%f) 

J'ai simplement créé une commande pour parcourir le répertoire et pour chaque fichier pdf (FOR %% f IN * .pdf), ouvrir le lecteur en mode silencieux (/ t), obtenir le prochain PDF (%% f) et l'envoyer à la file d'attente d'impression (SPST-SMPICK), puis supprimez chaque PDF après son envoi dans la file d'attente d'impression (del %% f). Shashank a montré un exemple de déplacement des fichiers dans un autre répertoire si c'est ce que vous devez faire.

FOR %%X in ("%dir1%*.pdf") DO (move "%%~dpnX.pdf" p/)
4
Michael Gargan

L'utilisation d'Acrobat Reader n'est pas une bonne solution, en particulier les attributs de ligne de commande ne sont pas documentés. De plus, la fenêtre du lecteur Acrobat reste ouverte après le processus d'impression. Les fichiers PDF sont bien connus des pilotes d’imprimante, vous pouvez donc trouver de meilleurs outils, tels que 2Printer.exe ou RawFilePrinter.exe. À mon avis, RawFilePrinter offre un meilleur support et un processus de licence clair (vous payez un don une fois et vous pouvez redistribuer RawFilePrinter dans de nombreux projets que vous aimez - même les nouvelles versions fonctionnent avec une licence achetée précédemment)

RawFilePrinter.exe -p "c:\Users\Me\Desktop\mypdffile.pdf" "Canon Printer" 
IF %ERRORLEVEL% 1(
    echo "Error!"
)

Dernière version à télécharger: http://bigdotsoftware.pl/index.php/rawfileprinter

3
zuko

On dirait que le nom de l'imprimante, le pilote et le port sont manquants, dans cet ordre. Votre commande finale devrait ressembler à:

AcroRd32.exe /t <file.pdf> <printer_name> <printer_driver> <printer_port>

Par exemple:

"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t "C:\Folder\File.pdf" "Brother MFC-7820N USB Printer" "Brother MFC-7820N USB Printer" "IP_192.168.10.110"

Remarque: pour trouver les informations sur l'imprimante, cliquez avec le bouton droit de la souris sur votre imprimante et choisissez Propriétés. Dans mon cas, ci-dessus, le nom de l'imprimante et celui du pilote correspondaient, mais vos informations peuvent différer.

3
rhp997

Le message d'erreur vous le dit.

Essayez juste 

"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe" /t "$pdf"

Lorsque vous placez la chaîne entre guillemets simples, tout le contenu d'une chaîne est valide, y compris les caractères ". En supprimant les guillemets simples, le shell traitera les guillemets dbl en tant que chaîne "wrappers". 

Je voudrais également envelopper la variable de nom de fichier entre guillemets afin que vous puissiez facilement traiter les fichiers avec des espaces dans leurs noms, par exemple.

"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe" /t "$pdf"

IHTH

3
shellter

J'ai eu le même problème avec l'impression de plusieurs fichiers PDF à la suite et je n'ai trouvé qu'une solution de contournement à l'aide du logiciel 2Printer. Exemple de ligne de commande pour imprimer les fichiers PDF:

2Printer.exe -s "C:\In\*.PDF" -prn "HP LasetJet 1100"

Il est gratuit pour une utilisation non commerciale sur http://doc2prn.com/

3
Lei
@ECHO off set "dir1=C:\TicketDownload" 
FOR %%X in ("%dir1%*.pdf") DO ( "C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe" /t "%%~dpnX.pdf" "Microsoft XPS Document Writer" ) 
FOR %%X in ("%dir1%*.pdf") DO (move "%%~dpnX.pdf" p/)

Essayez ceci .. Peut-être avez-vous une autre version de Reader, alors c’est le problème.

1
Shashank Bhat

Aujourd'hui, je cherchais cette solution et j'ai essayé PDFtoPrinter qui posait un problème (les PDF que j'ai essayé d'imprimer suggéraient qu'ils utilisaient un format de papier incorrect qui suspendait le travail d'impression et ne imprimait rien d'autre jusqu'à ce qu'il soit résolu). Dans mon effort pour trouver une alternative, je me suis souvenu de GhostScript et des utilitaires associés. J'ai trouvé GSView et son programme associé GSPrint (référence https://www.ghostscript.com/ ). Tous deux requièrent GhostScript ( https://www.ghostscript.com/ ) mais lorsque tous les composants ont été installés, GSPrint a parfaitement fonctionné et j'ai pu créer une tâche planifiée qui imprimait automatiquement des fichiers PDF en une nuit.

1
Multiverse IT