Estou procurando uma ferramenta de linha de comando de código aberto para cortar arquivos PDF, como podemos fazer no Adobe Acrobat Pro. Eu tentei PdfTk, ImageMagick, PyPDF e GhostScript - todos sem sucesso até agora.
Estou procurando uma ferramenta de linha de comando de código aberto para cortar arquivos PDF, como podemos fazer no Adobe Acrobat Pro. Eu tentei PdfTk, ImageMagick, PyPDF e GhostScript - todos sem sucesso até agora.
Respostas:
Eu sugiro que você dê uma olhada no PDFcrop .
Se você deseja cortar um pdf com as margens esquerda, superior, direita e inferior de 5, 10, 20 e 30 pt (pontos), execute
pdfcrop --margins '5 10 20 30' input.pdf output.pdf
no terminal. Para realmente cortar algo, use valores negativos no argumento para cortar. Por exemplo,
pdfcrop --margins '-50 -50 -50 -50' input.pdf output.pdf
colhe 50 pts da esquerda, superior, direita e inferior (nesta ordem).
Se você executar apenas o comando pdfcrop input
, ele produzirá um arquivo intitulado input-crop.pdf com margens zero. Acho isso muito útil ao incluir ilustrações em PDF em documentos.
Cortando vários arquivos
Infelizmente, o pdfcrop não pode cortar vários arquivos ao mesmo tempo. No entanto, é fácil escrever um script que recorte todos os pdfs na pasta em que o script está localizado.
Crie um novo arquivo vazio e chame-o something.sh
. Abra-o com um editor de texto e insira o seguinte:
#!/bin/bash
for FILE in ./*.pdf; do
pdfcrop "${FILE}"
done
Salve e feche. Em seguida, clique com o botão direito do mouse no arquivo, vá para Propriedades> Permissões e marque o campo Permitir a execução do arquivo como programa . Agora feche a caixa de diálogo. Execute o script clicando duas vezes nele e escolhendo Executar no Terminal . E a nova versão cortada com margem zero de todos os PDFs com o sufixo -crop agora será impressa na pasta. Se você deseja margens ou outras coisas, é claro que pode simplesmente abrir o script e adicionar argumentos depois pdfcrop
.
--bbox "<left> <bottom> <right> <top>"
. Isso permite usar a abordagem para determinar a área de cultivo descrita na minha resposta abaixo .
pdfcrop --help
lista as opções disponíveis. Não consigo ver nada que permita especificar um intervalo de páginas.
Obrigado pelo Rasmus, você pode instalar o pdfcrop a partir do pacote texlive-extra-utils:
sudo apt-get install texlive-extra-utils
Em seguida, corte os arquivos pdf usando o comando pdf crop como:
pdfcrop input.pdf output.pdf
use --help
para ver parâmetros mais surpreendentes como--margins
pdfcrop --margins 5 input.pdf output.pdf
que corta pdf com 5 pb de cada lado da página
gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -sOutputFile=output2.pdf output.pdf
depois, que corrigiu o tamanho do arquivo.
Você também pode cortar arquivos PDF simplesmente usando o Ghostscript. Escrevi um pequeno script para simplificar o processo (inspirado nesta resposta ):
#!/bin/bash
if [ $# -lt 5 ]
then
echo "Usage: `basename $0` <pdf-file> <x_min> <x_max> <y_min> <y_max>"
echo "Notes:"
echo " - all coordinates are absolute; no calculation of width/height necessary"
echo " - use 'gv' to determine the coordinates"
exit 65
fi
file="$1"
xmin="$2"
xmax="$3"
ymin="$4"
ymax="$5"
base="${file%.*}"
outfile="${base}_cropped.pdf"
echo "writing to: $outfile"
gs \
-o $outfile \
-sDEVICE=pdfwrite \
-c "[/CropBox [$xmin $ymin $xmax $ymax] /PAGES pdfmark" \
-f $file
Para determinar as coordenadas para o corte, eu uso gv
, que imprime as coordenadas do cursor do mouse usando as mesmas unidades que o Ghostscript. Por exemplo, aqui eu determino as coordenadas mínimas para x / y (os valores no canto superior esquerdo):
Agora as coordenadas máximas:
E, finalmente, eu corro o script pdf_crop_by_coordinates.sh test.pdf 45 429 38 419
produzindo um test_cropped.pdf
que se parece com isso:
Não tenho idéia, no entanto, como a solução Ghostscript se compara pdfcrop
em termos de qualidade e correção.
Quando não posso fazer algo com o pdftk, o próximo lugar que passo é o PDFjam , que é um wrapper de linha de comando para o pacote LaTeX das páginas em pdf (portanto, você também precisa disso e de uma distribuição TeX instalada). Para obter ajuda sobre como usá-lo, recomendo a tela de ajuda regular:
pdfjam --help
como a página de manual é escassa e a página da Web se concentra em exemplos.
Para cortar um PDF, o comando que você precisa é mais ou menos assim:
pdfjam --keepinfo --trim "10mm 15mm 10mm 15mm" --clip true --suffix "cropped" input.pdf
Isso produzirá um arquivo chamado input-cropped.pdf
. A ordem das guarnições deve ser deixado, inferior, direita, cima, conforme \includegraphics
a partir graphicx .
Para dar uma idéia de como ele se compara ao PDFcrop, tive motivos para cortar recentemente um PDF bastante sofisticado. Meu original era 675 kB, minha versão cortada via PDFjam era de 1,2 MB, enquanto uma versão cortada via PDFcrop era de 4,5 MB. Enquanto o PDFjam e o PDFcrop eliminaram os hiperlinks e marcadores incorporados, o PDFjam com a --keepinfo
opção preservou as propriedades do documento (por exemplo, título, autor, assunto).
Se uma ferramenta gráfica também estiver correta, eu recomendaria krop
: http://arminstraub.com/software/krop
Isso pode ajudá-lo.
Isso está de acordo com a versão mais recente do Ubuntu e do life. Este é o Master PDF Editor . Você pode usá-lo cortar, adicionar algumas coisas, etc.
Você pode usar um script pypdf nesta página . Mas na resposta a essa pergunta de troca de pilha , parece haver muitas opções também.
O programa pdfCropMargins é um aplicativo de linha de comando para cortar automaticamente as margens dos arquivos PDF.
Esse programa depende do programa Ghostscript ou do pdftoppm que está sendo instalado (e localizável) no sistema. E analise as imagens da página com o PIL para encontrar caixas delimitadoras, usando o limite 191.
instale usando
instalação do pip pdfCropMargins
Executar usando
pdf-crop-margins -v -s -u seu-arquivo.pdf
Para ajuda
pdf-crop-margins -h | Mais