Como posso dividir um arquivo PDF em uma única página rapidamente (por exemplo, na linha de comando do Terminal)?

20

Eu tenho um arquivo PDF de 6 páginas que eu quero dividir em 1.pdf, 2.pdf, 3.pdf, etc ...

A visualização não funciona para isso de forma surpreendente (a menos que esteja faltando alguma coisa).

Eu adoraria poder fazer esta tarefa simples a partir da linha de comando, mas neste momento vou fazer qualquer coisa que faça o trabalho (sem baixar o software esboçado)

O link não funciona como anunciado.

    
por user391339 16.10.2014 / 23:46

5 respostas

19

Abra o pdf na pré-visualização e, no menu de visualização, selecione as miniaturas. Ctrl selecione as páginas que você deseja agora arraste e solte-as na área de trabalho.

    
por 16.10.2014 / 23:49
33

Isso pode ser obtido usando pdfseparate . Você pode instalar o poppler com homebrew, por brew install poppler . Isso também instalará pdfseparate . Para dividir o PDF document.pdf em páginas únicas 1.pdf , 2.pdf , etc. use:

pdfseparate document.pdf %d.pdf
    
por 07.11.2015 / 18:26
4

Se você estiver interessado em fazer isso a partir da linha de comando, você pode olhar para Benjamin O script python splitPDF do Han para fazer o trabalho. Por exemplo:

splitPDF.py in.pdf 3 5

dividiria o arquivo in.pdf em 3 arquivos, dividindo nas páginas 3 e 5.

    
por 02.02.2015 / 10:30
1

Se você quiser extrair um intervalo de páginas, você pode usar o seguinte script que você chama assim (presumindo que você o salvou no arquivo pdfextract.py em algum lugar no PATH do seu sistema, por exemplo / usr / local / bin, e atribua a permissão de execução com chmod 744 pdfextract.py):

pdfextract.py --file-in / path / para / large / pdf --file-out / path / para / new / pdf --start --stop

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import argparse
import os
import subprocess as sp


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--file-in', required=True, type=str, dest='file_in')
    parser.add_argument('--file-out', required=True, type=str, dest='file_out')
    parser.add_argument('--start', required=True, type=int, dest='start', default=-1)
    parser.add_argument('--stop', required=True, type=int, dest='stop', default=-1)

    args = parser.parse_args()
    assert os.path.isfile(args.file_in)
    assert not os.path.isfile(args.file_out)

    # remove temporary files
    for el in os.listdir('/tmp'):
        if os.path.isfile(os.path.join('/tmp', el)) and el[:12] == 'pdfseparate-':
            os.remove(os.path.join('/tmp', el))

    sp.check_call('pdfseparate -f {:d} -l {:d} {:s} /tmp/pdfseparate-%d.pdf'.format(args.start, args.stop, args.file_in), shell=True)

    cmd_unite = 'pdfunite '
    for i in range(args.start, args.stop + 1):
        cmd_unite += '/tmp/pdfseparate-{:d}.pdf '.format(i)
    cmd_unite += args.file_out
    sp.check_call(cmd_unite, shell=True)

    # remove temporary files
    for el in os.listdir('/tmp'):
        if os.path.isfile(os.path.join('/tmp', el)) and el[:12] == 'pdfseparate-':
            os.remove(os.path.join('/tmp', el))


if __name__ == "__main__":
    main()
    
por 19.07.2017 / 08:41
0

Para outra alternativa, consulte este responder . Isso usa as ferramentas de linha de comando ImageMagick .

convert x.pdf -quality 100 -density 300x300 x-%04d.pdf

No entanto, você tem que ter cuidado com a qualidade.

    
por 29.01.2017 / 18:55