Juntar anexos de e-mail em um arquivo único Topic is solved

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

User avatar
rmichelotto
Posts: 6
Joined: 10 Dec 2020, 22:42

Juntar anexos de e-mail em um arquivo único

Post by rmichelotto » 15 Mar 2021, 10:19

Olá amiguinhos!

Há algum tempo eu usei um script para produzir um arquivo único (PDF) contendo o texto de um email e todos os anexos juntos:

Code: Select all

^y::

Sleep, 1000

FileDelete, C:\pastaprovisoria\PDFtemp\*.pdf ; diretório dos provisórios

Sleep, 3000


Send, {AltDown}{AltUp}
Sleep, 1500
Send, a
Sleep, 1500
Send, p
Sleep, 10000
Send, p
Sleep, 3000

InputBox, nomearquivo; Numero e tipo de arquivo

Sleep, 30000

; Count and display the number of files in the source folder for info - conta o número de arquivos na pasta pdfs provisórios
count=0
Loop, C:\pastaprovisoria\PDFtemp\*.pdf,0,1
   files:=(files ? "`n" : "") . A_LoopFileFullPath,count:=count+1

RunWait %comspec% /c PDFTK C:\pastaprovisoria\PDFtemp\*.pdf cat output C:\pastaprovisoria\PDFtemp\temp\prov.pdf, , hide ; Pass the parameters to pdftk and hide the commandline window on completion
FileMove, C:\pastaprovisoria\PDFtemp\temp\prov.pdf, C:\pastafinal\Imprimir PDF\%nomearquivo%.pdf  ; Rename a single file.

Return
Recentemente precisei voltar a usar e não está mais funcionando. Não sei se há algum problema na sintaxe, pois rodava em versão antiga do AHK e hj estou com uma atualizada.

A idéia: Eu faço a impressão da msg e dos anexos numa pasta provisória (C:\pastaprovisoria\PDFtemp); em seguida o script junta todos os arquivos em um com o aplicativo (PDFTK) e salva no arquivo (prov.pdf); por último, move o arquivo, renomeando (%nomearquivo%.pdf) que eu coloquei no Inputbox, para a pasta final (C:\pastafinal\Imprimir PDF\%nomearquivo%.pdf)

Alguém pode me dar uma luz?

User avatar
rmichelotto
Posts: 6
Joined: 10 Dec 2020, 22:42

Re: Juntar anexos de e-mail em um arquivo único

Post by rmichelotto » 16 Mar 2021, 09:07

Essa noite vasculhei mais um pouco e descobri que o problema está na sintaxe do comando para o aplicativo que junta os PDFs (PDFTK builder), pois renomeei um dos arquivos na pasta provisória para o nome de transição e o script executou o final numa boa.

Code: Select all

RunWait %comspec% /c PDFTK C:\pastaprovisoria\PDFtemp\*.pdf cat output C:\pastaprovisoria\PDFtemp\combined1.pdf, , hide ; Pass the parameters to pdftk and hide the commandline window on completion
Nessa linha está o mistério...

User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Juntar anexos de e-mail em um arquivo único

Post by Gio » 16 Mar 2021, 10:08

Bom dia Rmichelotto.

Seja bem-vindo ao fórum da comunidade do AutoHotkey.

Você pode tentar salvar os resultados do comando enviado ao console (CMD) em um arquivo de texto e depois abrí-lo para ver que tipo de exceção o programa (PDFTK) levantou.

Exemplo: Substitua a linha do RunWait por esta:

Code: Select all

RunWait %comspec% /c PDFTK C:\pastaprovisoria\PDFtemp\*.pdf cat output C:\pastaprovisoria\PDFtemp\combined1.pdf >>%A_Desktop%\resultado.txt, , hide

Quando você rodar o script com a linha acima, tudo o que ocorrer no console será escrito em um arquivo de texto de nome "resultado.txt" que será colocado na sua área de trabalho. Execute o scritpt, abra o arquivo texto salvo na sua área de trabalho, e veja se o programa PDFTK explicou o motivo da não conclusão da tarefa.

:arrow: Como você comentou sobre renomear os arquivos, é importante saber que as linhas de comando do console não aceitam nomes de caminhos de arquivos com espaços (a menos que você coloque aspas). Talvez isso explique o porque renomear os arquivos foi suficiente. Nesse caso, você pode alterar os nomes dos anexos baixados ANTES de rodar o comando (substituindo espaços por underlines por exemplo).

User avatar
rmichelotto
Posts: 6
Joined: 10 Dec 2020, 22:42

Re: Juntar anexos de e-mail em um arquivo único  Topic is solved

Post by rmichelotto » 16 Mar 2021, 15:11

Consegui fazer funcionar!!

1. baixei uma nova versão do PDFTKBuilder (https portableapps.com /apps/office/pdftk_builder_portable) Broken Link for safety
2. os arquivos pdftk.exe, pdftk.txt, pdftkb.png, PDFTKBuilder.exe, PDFTKBuilder.ini e pasta tmp devem ficar copiados na mesma pasta dos arquivos de execução do AHK
3. os arquivos .exe devem ter a propriedade de executar como administrador assinalada
4. a pasta provisória foi movida para C:\PDFTemp (não pode ter espaço no nome das pastas)

Como ainda não descobri uma forma dos anexos irem direto na impressão (o outlook me pergunta abrir ou salvar), coloquei 30s de tempo pra liberar manualmente, mas sem essa interrupção, não precisa.

Valeu quebrar um pouco a cabeça. Aqui vai o script final, caso alguém ou queira aproveitar ou mesmo aprimorar:

Code: Select all

^#y::

Sleep, 1000

FileDelete, C:\PDFtemp\*.pdf ; diretório de provisórios

Sleep, 3000

Send, {AltDown}{AltUp}
Sleep, 1500
Send, a
Sleep, 1500
Send, p
Sleep, 8000
Send, p
Sleep, 1000

InputBox, nomearquivo, Numero e tipo de arquivo

Sleep, 30000; pode ser reduzido se não for necessario tanto tempo

; Count and display the number of files in the source folder for info - conta o número de arquivos na pasta pdfs provisórios
count=0
Loop, C:\PDFtemp\*.pdf,0,1
   files:=(files ? "`n" : "") . A_LoopFileFullPath,count:=count+1


RunWait %comspec% /c PDFTK.exe C:\PDFtemp\*.pdf cat output C:\PDFtemp\combined1.pdf, , hide ; Pass the parameters to pdftk and hide the commandline window on completion

FileMove, C:\PDFtemp\combined1.pdf, C:\Users\Rmichelotto\Docs\Imprimir PDF\%nomearquivo%.pdf  ; Rename a single file.


Return
:dance:

Post Reply

Return to “Ajuda e Suporte Geral”