Linha de comando: Como você gira um arquivo PDF 90 graus?

54

Quando digitalizo documentos orientados para paisagem, os arquivos PDF de saída são retrato e, portanto, todos os visualizadores de PDF exibem os documentos digitalizados em retrato.

Na linha de comando, como você gira um arquivo PDF 90 graus?

Tentei pesquisar e encontrei várias soluções, mas tive problemas para encontrar o que parecia ser uma solução autorizada [1] que usa uma ferramenta linux / unix estável / robusta.


nota de rodapé [1]

Por exemplo, aqui está uma amostra de algumas das soluções aleatórias que encontrei:

  • "basta usar o Adobe Acrobat Pro para girar e salvar o arquivo"
  • "use pdfjam"
  • "use pdftk"
  • "use $ {PROGRAM_NAME} do Poppler"
  • "use convert do Imagemagick" - mas todos os comentários foram muito negativos e afirmaram "a qualidade da imagem está arruinada"
  • "abra o arquivo em um visualizador de PDF, gire e imprima usando uma impressora PDF como CUTEPDF ou PDFPRINTER ou etc"
  • "use $ {PROGRAM_NAME}", procurei "$ {PROGRAM_NAME}" e há algo sobre "O Fedora removeu $ {PROGRAM_NAME} devido a problemas de licenciamento"
Trevor Boyd Smith
fonte
5
Não há "soluções autorizadas", mas lembre-se de qual método as várias soluções usam: Manipulação direta da estrutura do PDF (pdftk, Adobe Acrobat e outros programas), convertendo em uma imagem e depois convertendo em PDF (por exemplo, Imagemagick's convert, impressão usando impressora PDF, etc.). O último é obviamente uma má ideia.
dirkt
Como estão essas soluções aleatórias ? Como você ficou desapontado com cada um deles? Você realmente os experimentou?
simlev 16/09/18

Respostas:

48

Basta usar o pdftk.

  1. Para girar no sentido horário:

    pdftk input.pdf cat 1-endeast output output.pdf
    
  2. Para girar no sentido anti-horário:

    pdftk input.pdf cat 1-endwest output output.pdf
    

Em relação à instalação do pdftk no Fedora, encontrei este link .

user163859
fonte
4
A página de manual do pdftk indica mais opções de rotação:The page rotation setting can cause pdftk to rotate pages and documents. Each option sets the page rotation as follows (in degrees): north: 0, east: 90, south: 180, west: 270, left: -90, right: +90, down: +180. left, right, and down make relative adjustments to a page's rotation.
Tapper
A saída é girada, mas ainda é reduzida o suficiente para caber na orientação original. Não ajuda.
31418 JohnMudd
@JohnMudd O que você quer dizer com "redimensionado o suficiente para caber na orientação original"? Suponho que agora você tenha um problema com o visualizador de PDF, não com a rotação de páginas.
User163859 12/1218
Meu PDF original era uma página em tamanho carta girada 90 graus, de modo que a altura da página foi reduzida de 11 "para 8,5". Não mudou depois de corrigir a rotação. Verificou que isso é verdade com muitas ferramentas online. Afinal, pode não ser um problema com a conversão. Encontrei uma opção de dimensionamento ao visualizar / imprimir PDF girado e que o corrigia. Desculpe, eu estava tão frustrado naquele momento que acabei de imprimir e seguir em frente, e não notei as etapas exatas que tomei.
31418 JohnMudd
11
pdftkfoi removido no Ubuntu 18.04 e superior. O próprio Ubuntu sugere instalar um snap, que funciona apenas em situações simples (ele não encontrou meus arquivos, talvez porque estavam fora do meu diretório pessoal?). Eu me mudei para pdfjam ... --angle 270....
Stéphane Gourichon
43

Eu apenas tropecei nessa discussão e vi que ainda não havia uma boa solução mencionada. Eu descobri que (pelo menos no Debian e Ubuntu) o pdfjam vem com os seguintes comandos:

pdf90 input.pdf
pdf180 input.pdf
pdf270 input.pdf

Eu acho que é a abordagem mais fácil e rápida. Estes são scripts usando o comando pdfjam corretamente. Btw. o pdfjam é um pacote virtual que vem comtexlive-extra-utils

derschueddi
fonte
4
Parece que 90 vai no sentido anti-horário e 270 no sentido horário - talvez você deva mencionar isso.
Aaron Hall
2
O pdf90 é realmente um invólucro fino. No entanto, força uma convenção de sufixo. Então usei o pdfjam diretamente:pdfjam --outfile myoutputfile.pdf --angle 270 --fitpaper true --rotateoversize true myinputfile.pdf
Stéphane Gourichon
16

Você pode usar o ImageMagick: displayou convert- por exemplo, para girá-lo no sentido horário, use

convert -rotate 90 <file>.pdf <rotated-file>.pdf

Use -90 para uma rotação no sentido anti-horário.

NB Apenas utilizar este método quando a imagem original é um mapa de bits (por exemplo, produzido por varrimento). Se a imagem original não for um bitmap, esse método a converterá em uma e a qualidade sofrerá. Neste último caso, use um dos métodos nas outras respostas.

NickD
fonte
11
Isso primeiro converterá o texto PDF em uma imagem, para aumentar o tamanho e diminuir a qualidade (a menos que já tenha sido apenas uma digitalização).
aviv
11
Sim, de fato, esse é um lembrete útil, mas, neste caso, o OP afirma que ele está digitalizando os documentos.
NickD
12
O resultado do pdf é de qualidade muito baixa.
Ivan Romanov
Esse método é bom apenas para originais digitalizados: eles já são bitmaps. Para PDFs comuns, consulte o comentário de @ aviv acima e talvez use o método na outra resposta.
NickD
13

No Linux Mint 18.3 (eu acredito em outras distribuições derivadas do Debian), você tem uma simples ferramenta de linha de comando denominada QPDF.

Você pode usar: qpdf in.pdf out.pdf --rotate==[+|-]angle[:page-range].

A partir da documentação :

--rotate = [+ | -] ângulo [: intervalo de páginas]

Aplique rotação às páginas especificadas. A parte do intervalo de páginas do valor da opção tem o mesmo formato dos intervalos de páginas na Seção 3.5, “Opções de seleção de página”. Se o intervalo de páginas for omitido, a rotação será aplicada a todas as páginas. A parte do ângulo do parâmetro pode ser 90, 180 ou 270. Se precedido por + ou -, o ângulo é adicionado ou subtraído das rotações originais das páginas especificadas. Caso contrário, as rotações das páginas são definidas com o valor exato. Por exemplo, o comando qpdf in.pdf out.pdf --rotate=+90:2,4,6 --rotate=180:7-8giraria as páginas 2, 4 e 6 90 graus no sentido horário da rotação original e forçaria a rotação das páginas 7 a 9 a 180 graus, independentemente da rotação original, e o comando qpdf in.pdf out.pdf --rotate=180giraria todas as páginas em 180 graus.

Royi
fonte
3
A especificação do intervalo de páginas parece ser obrigatória, pelo menos na minha versão atual do qpdf (8.0.2).
Xtreme Biker
Parece que pelo menos não é mais o caso (9.0.2): qpdf in.pdf out.pdf --rotate==-90funciona bem para todas as páginas.
iNyar
12

O pdftk não está mais disponível no Ubuntu 18.04 devido a algumas dependências obsoletas.

A melhor solução que encontrei foi a ferramenta (gráfica) pdfshuffler .

Instale e execute-o. Abra o arquivo pdf desejado, clique com o botão direito do mouse na página e gire cada um individualmente. Ele também reúne PDFs e outras coisas interessantes.

sudo apt install pdfshuffler
trônico
fonte
11
Você precisa girar cada página manualmente? Isso é um desagrado. Preciso girar um livro PDF de centenas de páginas para visualizá-lo melhor (maior) em um Kindle. ATUALIZAÇÃO : Tentei, não. Você pode pressionar Ctrl-A para selecionar todas as páginas e girá-las todas em uma única etapa.
Gerry Lufwansa
6

Para melhorar a resolução de saída (o padrão é 72 DPI), obtive bons resultados com:

convert -rotate -90 -density 200 input.pdf output.pdf

Era para um .pdf de um documento digitalizado. Eu achei que -density 300a qualidade reduzida um pouco versus -density 200.

Greg Ben
fonte
A adição de densidade 300, 600 e até 1200 teve apenas uma ligeira melhoria na qualidade da saída.
JohnMudd 10/10
1

Embora tenha suas limitações, muitas vezes uso o PDFedit, especialmente para a rotação de digitalizações de PDF. Embora a conversão do ImageMagick (usando valores de alta densidade) alcance uma qualidade bastante boa, ela também incha o arquivo (original: 155 kiB, cópia girada em 180 °: 1,2 MiB). O PDFedit gira a mesma imagem com qualidade inalterada sem alterar notavelmente o tamanho do arquivo.

ToraKamo
fonte
parece muito promissor! Também notei o problema de alterar drasticamente o tamanho do arquivo a que você se refere.
Trevor Boyd Smith
0

Eu uso este comando para girar automaticamente os arquivos PDF para ficar na vertical se eles não estiverem na vertical:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/All -sOutputFile="$outputFile" "$file"
SebMa
fonte
Isso teve efeito zero.
Colin 'Hart
@ Colin'tHart meu comando só restaura o documento para se tornar vertical para baixo se não fosse vertical em primeiro lugar, para forçar o uso de rotação pdf90ou pdf180ou pdf270em alternativa, consulte esta resposta
SebMa