Criando um arquivo batch ou .bat para linearizar e mesclar PDFs usando o QPDF.exe

3

Estou tentando criar um arquivo .bat OR.bat que linearize MÚLTIPLOS arquivos PDF. Eu já tenho um script que eu requisitei que usa PDFTK que envia PDFs para a pasta 'sendto' onde eles são combinados. Eu gostaria de fazer o mesmo com o qpdf, mas use o comando --linearize .

O principal problema é que não posso combinar os arquivos primeiro em um PDF usando o PDFTK e, em seguida, linearizar o arquivo único - os arquivos ainda ficam muito grandes. O que funciona melhor é linearizar cada arquivo INDIVIDUAL e depois combiná-los. Provavelmente seria melhor se eu pudesse combiná-los usando o qpdf, assim não precisaria usar dois programas diferentes.

EM SUMMAÇÃO:

Este é o arquivo bat atual que eu tenho que funciona perfeitamente (abaixo) - > Eu posso selecionar vários arquivos PDF, soltá-los no arquivo bat e sai um novo arquivo PDF chamado Combined_PDFs.pdf. Eu quero fazer o mesmo com qpdf, exceto linearizar, então combinar os arquivos. Não consigo acertar a sintaxe, simplesmente não sei o suficiente sobre arquivos bat.

SCRIPT DE TRABALHO ATUAL:

@echo off
PUSHD "%~dp0"
setlocal enabledelayedexpansion
FOR %%A IN (%*) DO (set command=!command! %%A)
pdftk.exe %command% cat output "%~dp1Combined_PDFs.pdf" compress

Este script funciona, mas só funcionará para um arquivo de cada vez:

@echo off
PUSHD "%~dp0"
setlocal enabledelayedexpansion
FOR %%A IN (%*) DO (set command=!command! %%A)
qpdf.exe --linearize %command% "%~dpn1_Reduced%~x1"

Eu preciso do script acima para trabalhar com várias entradas.

    
por matt m 21.05.2014 / 21:03

1 resposta

2

Acredito que o que você precisa fazer é alterar o loop FOR no segundo arquivo de lote. O primeiro arquivo de lote cria uma variável local chamada " comando " que contém todos os arquivos passados para o arquivo de lote em uma string, separados por espaços.

No entanto, no seu segundo arquivo de lote, você precisa executar o programa qpdf.exe separadamente para cada arquivo. Para fazer isso, altere o loop FOR para executar o programa qpdf.exe em cada loop:

@echo off
PUSHD "%~dp0"
setlocal enabledelayedexpansion
FOR %%A IN (%*) DO qpdf.exe --linearize %%A "%%~dpnA_Reduced%%~xA"

Em resumo, isso será executado após o DO uma vez para cada string passada para o arquivo em lote.

Além disso, como uma dica para depuração futura, tente colocar REM na frente da instrução @echo off temporariamente. REM é usado para comentar o código e pode melhorar a legibilidade. Isso exibirá cada linha no arquivo em lote à medida que for executada, para que você tenha uma ideia muito melhor do que está acontecendo ao executar.

REM @echo off
    
por 22.05.2014 / 03:20