Frequentemente recebo arquivos PDF em que a primeira página está vazia ou é apenas uma capa que não tenho utilidade. Você pode sugerir uma maneira rápida e eficiente (Applescript, Service ou ???) de excluir apenas a primeira página e salvar o arquivo?
Se isso puder ser automatizado via Preview ou Adobe Acrobat Professional, seria o ideal.
Alguma ideia?
Responder1
Você pode fazer isso usando umAutomatizadorfluxo de trabalho. É um pouco mais complexo que a maioria, então tome cuidado ao implementá-lo.
Esta postagem contémdoisversões: uma é mais curta e armazena a saída como Processed PDF File.pdf
na área de trabalho, a outra é mais longa e armazena o arquivo como(Edited)
InputFileName.pdf
no mesmo diretório. As etapas necessárias apenas para a versão mais longa estão marcadas(opcional).
AbrirAutomatizadore selecione para criar um novoServiçoque recebeArquivos PDFcomo entrada emQualquer aplicativo.
- (opcional)Adicione umDefinir valor da variávelação e nomeie a variável
FilePath
. (opcional)Adicione umExecute o AppleScriptaction e use o seguinte código de script para obter o nome da pasta em que o arquivo está localizado:
on run {input, parameters} tell application "Finder" to return (container of first item of input) as alias end run
(opcional)Adicione umDefinir valor da variávelação e nomeie a variável
Folder
.- (opcional)Adicione umObtenha o valor da variávelação e retornar a variável
FilePath
. Ignore a entrada desta ação em seuOpções. (opcional)Adicione umExecute o ShellScriptação e passagem de entradacomo argumentos. Use o seguinte script para extrair o nome base do arquivo:
echo "$( basename "$1" )"
(opcional)Adicione umDefinir valor da variávelação e nomeie a variável
FileName
.(opcional)Adicione umObtenha o valor da variávelação e nomeie a variável
FilePath
. Ignore a entrada desta ação em seuOpções.Adicione umPDF para imagensação, salvando a saída na área de trabalho ou em qualquer pasta que possa conter arquivos temporários. Nomeie-os como quiser.
- Adicione umDefinir valor da variávelação, para sabermos mais tarde quais arquivos temporários excluir. Dê um nome à variável
TempFiles
. Adicione umExecute o AppleScriptação e use o seguinte código de script para filtrar a lista de arquivos temporários (é aqui que removemos a primeira página):
on run {input, parameters} return rest of input end run
Adicione umCombine páginas PDFação para juntar as peças novamente, poranexando páginas.
- Use oMover itens do Finderação para mover o arquivo resultante (o PDF recombinado) para a área de trabalho ou para qualquer pasta onde você desejar. Se você decidiu calcular a pasta pai do arquivo de entrada, é aqui que você arrasta e solta uma referência à
Folder
variável. - ORenomear itens do FinderA ação pode dar a esses arquivos um nome de arquivo melhor do que, por exemplo,
zOpY3O.pdf
, que é o nome de arquivo atribuído automaticamente para o arquivo PDF combinado. Usar, por exemploNomear item únicoe dê a ele um nome base deProcessed PDF File
. Se você optou por usar a variante mais longa, arrasteFileName
da lista de variáveis para o campo de texto e adicione(Edited)
logo antes dele. Agora basicamente terminamos, só precisamos limpar. - Adicione oObtenha o valor da variávelação e obtenha o valor de
TempFiles
. Ignore a entrada desta ação em seuOpções. - Adicione umMover itens do Finder para a lixeiraação para remover os arquivos temporários de página única.
Aqui está uma captura de tela da versão mais longa finalizada do fluxo de trabalho:
Responder2
Usando o mencionadoferramentas PDF de linha de comando, consegui compilar um fluxo de trabalho que faz o seguinte:
- Pegue um PDF de entrada (ou PDFs) e gere um novo arquivo menos a primeira página
- Mova o PDF original para a lixeira
- Renomeie o novo arquivo para corresponder ao arquivo original
Primeiro instalei as ferramentas PDF conforme as instruções. A ferramenta principal neste caso é o pdfsplit.
No Automator, criei um novo serviço para receber arquivos PDF selecionados no Finder.
Adicionei a ação "Executar Shell Script", com o shell como "/bin/bash" e "passar entrada" definido como "como argumentos". Em seguida, escrevi o seguinte script simples:
for f in "$@"
do
/usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
done
Adicionei uma ação "Mover itens do Finder para a lixeira" para o arquivo original e uma ação "Substituir texto" para remover a extensão .tmp do novo arquivo.
Para executar o processo com uma entrada de pasta, o script seria algo como:
cd "$@"
for f in *pdf
do
/usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
done
Suponho que poderia ter feito tudo no shell script, incluindo remover e renomear. Mas o comando rm pode ser perigoso e prefiro mover o arquivo original para a lixeira.
O script pode ser modificado para fazer mais do que simplesmente remover um número x de páginas. Desenvolvi um programa semelhante para cortar em lote e combinar PDFs, por exemplo. Confira o manual do pdfsplit e as ferramentas que o acompanham para obter mais informações.
Responder3
Alguém em outro fórum desenvolveualgunsferramentas PDF de linha de comando, incluindo aquele que exclui páginas. Parecia ser relativamente fácil. O único problema possível pode ser como isso funciona com seu fluxo de trabalho. Pela sua descrição, parece que algo funciona enquanto o PDF está aberto e essas ferramentas parecem funcionar (melhor) com um arquivo fechado.
Responder4
Apenas para complementar a resposta fornecida por Joseph Yannielli, para aqueles que decidem executar o shell script pode ser mais fácil incluir comandos para excluir e renomear o arquivo no script em vez de adicionar ações separadas via Automator:
for f in "$@"
do
/usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
rm "$f"
mv "$f".tmp "$f"
done
Quanto à instalação de ferramentas PDF de linha de comando, isso pode ser feito convenientemente com o uso doCerveja caseira:
brew install pdf-tools