A imprimir PDFs da linha de comandos do Windows

Estou a tentar imprimir todos os pdfs na pasta actual. Quando eu chamar este script bash em cmd ([[1]}): Está tudo a funcionar bem.

ao ligar multiplepdfs.sh com este conteúdo:

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

O Eco mostra que os ficheiros são endereçados correctamente no loop - mas depois recebo o erro "C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe": No such file or directory

Alguém pode ajudar com este assunto?

editar: BTW, eu tenho msys mingw instalado

Author: Kay, 2013-10-01

9 answers

Eu sei que esta é uma pergunta antiga, mas eu fui confrontado com o mesmo problema recentemente e nenhuma das respostas funcionou para mim:

    Não consegui encontrar uma versão antiga do Foxit Reader.
  • como @pilkch disse 2Printer adiciona uma página de relatório
  • O leitor de Adobe abre uma interface gráfica
Depois de procurar um pouco mais, encontrei isto: http://www.columbia.edu / ~em36/pdftoprinter.html.

É um exe simples que você chama com o nome do ficheiro e imprime para o padrão impressora (ou uma que você especificar). A partir do site:

PDFtoPrinter é um programa para imprimir arquivos PDF a partir da linha de comandos Windows. O programa é projetado geralmente para a linha de comandos Windows e também para uso com o emulador vdos DOS.

Para imprimir um ficheiro PDF na impressora Windows por Omissão, use este comando:

PDFtoPrinter.exe filename.pdf

Para imprimir numa impressora específica, adicione o nome da impressora entre aspas:

PDFtoPrinter.exe filename.pdf "Name of Printer"

Se quiser imprimir numa rede impressora, use o nome que aparece nas janelas de impressão do Windows, como esta (e tenha cuidado para notar as duas barras invertidas no início do nome e a barra invertida única a seguir ao nome do servidor):

PDFtoPrinter.exe filename.pdf "\\SERVER\PrinterName"
 10
Author: scripts, 2017-12-27 15:30:44
Tive dois problemas em usar o Acrobat Reader para esta tarefa.
  1. a API da linha de comandos não é oficialmente suportada, por isso pode mudar ou ser removida sem aviso prévio.
  2. Envie um comando de impressão para o leitor carregar a interface gráfica, sem aparentemente nenhuma forma de a impedir. Eu precisava que o processo fosse transparente para o usuário.

Deparei-me com este blog, que sugere o uso de Foxit Reader. Foxit Reader é livre, a API é quase idêntica a Acrobat Reader, mas crucialmente está documentado e não carrega a interface gráfica para trabalhos de impressão.

Uma palavra de aviso, não basta clicar através do processo de instalação sem prestar atenção, ele tenta instalar software não relacionado também. Porque é que os fornecedores de software ainda estão a fazer isto???

 7
Author: kim3er, 2014-03-20 07:38:53
A primeira resposta-queria finalmente retribuir a uma comunidade útil...

Queria adicionar isto às respostas para as pessoas que ainda procuram uma solução simples. Estou a usar um produto GRÁTIS da Foxit Software-FoxItReader.
Aqui está o link para a versão que funciona com a impressão silenciosa - versões mais recentes o recurso de impressão silenciosa ainda não está funcionando. 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) 

Simplesmente criei um comando para percorrer o directório e para cada pdf ficheiro (para %%f em *.pdf) abrir o leitor em silêncio (/t) obter o próximo PDF (%%f) e enviá-lo para a fila de impressão (SPST-SMPICK), em seguida, apagar cada PDF depois de Eu enviá-lo para a fila de impressão (del%f). O Shashank mostrou um exemplo de mover os ficheiros para outra pasta se for isso que precisa de fazer

FOR %%X in ("%dir1%*.pdf") DO (move "%%~dpnX.pdf" p/)
 4
Author: Michael Gargan, 2017-10-18 12:52:56

Parece que lhe falta o nome da impressora, o condutor e a porta - por essa ordem. O seu comando final deve assemelhar-se a:

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

Por exemplo:

"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"
Nota: para encontrar a informação da impressora, carregue com o botão direito na sua impressora e escolha as propriedades. No meu caso mostrado acima, o nome da impressora e o nome do driver coincidiram - mas as suas informações podem ser diferentes.
 3
Author: rhp997, 2013-10-30 23:31:22

Tive um problema semelhante com a impressão de vários ficheiros PDF em uma linha e só encontrei trabalho ao usar software 2Printer. Exemplo da linha de comandos para imprimir ficheiros PDF:

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

É gratuito para uso não comercial em http://doc2prn.com/

 3
Author: Lei, 2014-08-14 20:34:15

Usar o Acrobat reader não é uma boa solução, especialmente os atributos da linha de comandos não estão documentados. Além disso, a janela do Acrobat reader permanece aberta após o processo de impressão. Arquivos PDF são bem conhecidos pelos drivers de impressora, então você pode encontrar melhores ferramentas, como 2Printer.exe ou RawFilePrinter.exe. Na minha opinião, o RawFilePrinter tem um melhor suporte e um processo de licenciamento claro (você paga a doação uma vez e pode redistribuir o RawFilePrinter em muitos projetos que você gosta - até as novas versões funcionam com licença adquirida anteriormente)

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

Última versão a transferir: http://effisoft.pl/rawfileprinter

 3
Author: zuko, 2016-06-15 08:10:13

A mensagem de erro está a dizer-te.

Tenta apenas

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

Quando você fecha o texto entre aspas simples, isto faz com que tudo esteja dentro de um texto válido, incluindo os caracteres ". Ao remover as aspas simples, a shell irá processar as aspas dbl como string "wrappers".

Também iria embrulhar a variável de nomes de ficheiros em aspas dbl para que possa processar facilmente ficheiros com espaços nos seus nomes, ou seja

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

IHTH

 3
Author: shellter, 2018-02-21 16:17:12
@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/)
Experimenta isto..Pode ser que você tenha alguma outra versão do leitor de modo que este é o problema..
 1
Author: Shashank Bhat, 2014-08-30 21:35:11

Hoje eu estava procurando por esta mesma solução e eu tentei PDFtoPrinter que eu tinha um problema com (o PDFs eu tentei imprimir sugeriu que eles usaram o tamanho incorreto do papel que pendurou a tarefa de impressão e nada mais impresso até que resolvido). No meu esforço para encontrar uma alternativa, lembrei-me do GhostScript e dos utilitários associados a ele. Encontrei GSView and it's associated program GSPrint (reference https://www.ghostscript.com/). ambos requerem GhostScript ([2]} https://www.ghostscript.com/) mas quando todos os componentes estão instalados, o GSPrint funcionou perfeitamente e eu fui capaz de criar uma tarefa agendada que imprimiu PDFs automaticamente durante a noite.

 1
Author: Multiverse IT, 2018-08-03 07:35:08