Não sei se é possível sem um comando externo.
Primeiro vamos analisar como funciona qualquer linha de comando padrão da maioria dos Softwares com suporte à impressoras.
Em geral para imprimir páginas especificas é necessário usar virgula:
Mas para imprimir um intervalo é apenas um traço (hífen), por exemplo se eu quiser imprimir da 3 até a 12:
Mas se eu quiser imprimir dois intervalos distintos, bastaria combinar eu imagino:
Mas e para imprimir um intervalo "dá página X até a última, à principio achei que fosse asteristico (*), mas ao que vi na maioria dos programas basta deixar vázio após o hífen.
Um documento com 60 páginas por exemplo e quero começar da 3 pois as anteriores são apenas capa e créditos:
Então seguindo o que você precisa:
À não ser que todos os documentos tenham a mesma quantidade de páginas, mas aí é contigo pra resolver.
Segunda etapa é encontrar um programa que possa aceitar esses parâmetros na linha de comando, nesse caso eu encontrei esse:
https://www.robvanderwoude.com/commandlineswitches.php#Acrobat
Próxima etapa, criar um método simples que encontre apenas os arquivos PDF de uma pasta:
Code: Select all
#NoEnv
#Warn
#SingleInstance Force
SetWorkingDir %A_ScriptDir%
stop := 0
Loop, Files, *.pdf
{
if (stop <> 0)
{
break
}
else
{
AcroRd32.exe /p "%A_LoopFileName%" "page=1,4-"
}
}
ExitApp
;Ctrl + Alt + x - Change to "True"
^!x:: stop := 1
Eu criei por segurança um comando que pare a aplicação através de um comando de combinação de teclas.
Mas digamos que você imprima parte dos documentos, e não queira repetir o processo, precisamos salvar os anteriores ao encerramento da aplicação em algum arquivo:
Code: Select all
#NoEnv
#Warn
#SingleInstance Force
SetWorkingDir %A_ScriptDir%
stop := 0
Loop, Files, *.pdf
{
printed := 0
if (stop <> 0)
{
break
}
else
{
chkf := A_LoopFileName
Loop, read, _printed.txt
{
if(A_LoopReadLine = chkf)
{
printed := 1
break
}
}
if (printed <> 1)
{
RunWait, AcroRd32.exe /p "%chkf%" "page=1,4-"
FileAppend, %chkf%`n, _printed.txt ; Registra o arquivo apos mandar o comando de imprimir
}
}
}
ExitApp
;Ctrl + Alt + x - Change to "True"
^!x:: stop := 1
Vale lembrar que eu não testei esse script, eu mostrei o processo com dialogo de impressão por que não me recordo como realmente funciona e não tenho como testar agora.
A idéia é poder ensinar como funcionam os métodos pra que você mesmo possa preparar sem dificuldades em cima do cenário que você está trabalhando.