Respostas:
Consulte "Combinando arquivos PDF na linha de comando no OSX" em Associando arquivos PDF no OS X na linha de comando .
Acontece que a partir de Tiger, o OSX é fornecido com um script Python que faz exatamente o que você precisa. O script já é executável e o Python está pré-instalado no OS X; portanto, tudo o que você precisa fazer para executá-lo é abrir o Terminal e digitar
"/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py" -o PATH/TO/YOUR/MERGED/FILE.pdf /PATH/TO/ORIGINAL/1.pdf /PATH/TO/ANOTHER/2.pdf /PATH/TO/A/WHOLE/DIR/*.pdf
Também na página do link que sugere fazer um link simbólico para o join.py
arquivo para facilitar a digitação porém omitiu a -s
no ln -s ... ...
, e sem ele, um hard link é criado. Provavelmente não importaria, no entanto, embora eu mencionei isso.
Basta instalar o Ghostscript usando o Brew com o comando:
brew install gs
Em seguida, execute o comando com todos os arquivos listados:
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf source1.pdf source2.pdf source3.pdf
gs
portanto, para referência futura, essa solução seria igualmente conveniente.
O script python da Apple na ação Automator é muito lento, pois usa as APIs CGPDFDocument da CoreGraphics, em vez da nova estrutura PDFKit. Também importa toda a biblioteca CoreGraphics, em vez de apenas as APIs necessárias.
Um script python alternativo e mais rápido pode ser encontrado aqui:
Esse script também adiciona um índice ao PDF, listando cada arquivo de componente (e mesclando os ToCs existentes), o que a Apple não inclui.
Ele pode ser usado na linha de comando (com nomes de arquivos PDF como argumentos) ou em uma ação de script do shell do Automator, para criar uma Ação / Serviço Rápido para o Finder.
time
comando em conjunto com o seu joinpdfs.py
script , o join.py
script interno e dois arquivos ~ 200 MB cada, seu joinpdfs.py
script foi 9 segundos mais rápido que o join.py
script interno , com o benefício adicional de manter o TOC intacto . Agradável! +1
FWIW, escrevi um pequeno programa rápido que permite fazer isso sem precisar depender de dependências externas como o python do sistema e outras coisas. No github aqui: pdfmerge e bastante simples de usar, pode passar uma lista de arquivos PDF para mesclar pdfmerge in1.pdf in2.pdf ... out.pdf
, passar uma lista de arquivos para mesclar em um arquivo de texto pdfmerge infileslist.txt out.pdf
ou apenas fazer o diretório atual em ordem ABC pdfmerge out.pdf
. Eu o escrevi como um projeto de aprendizado, tão gratuito e aberto, e você pode obter o binário mais recente na guia releases no github.
join.py
script da ação Combinar páginas PDF no Automator, nada mais precisa ser baixado ou instalado, mas para usar o seu, é necessário faça o download e instale. Também não vi um binário no link.
com base em @Bartosz Petryński 's resposta agradável , podemos fazer próprio mínima cpdf
utilidade em cima do GhostScript:
brew install gs
cpdf () {
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$1" "${@:2}"
}
então use-o como:
cpdf merged.pdf file1.pdf file2.pdf file3.pdf
Eu achei a ferramenta de linha de comando Coherent PDF gratuita como a melhor opção. É muito rápido, sem perdas e não atrapalha a orientação ou os links, como algumas outras soluções. O formato é:
cpdf file1.pdf file2.pdf -o output.pdf