Como posso fazer todas as páginas em um PDF do mesmo tamanho?

4

Eu tenho um pdf com páginas de tamanhos diferentes. A primeira página é 579,275 por 402,547 pontos. As páginas restantes são 612 por 792 pts (carta). Eu gostaria de ter todas as páginas em tamanho de letra. A saída de pdfinfo -box -f 1 -l 10 A.pdf é:

$ pdfinfo -box -f 1 -l 10 A.pdf 
Creator:        Toolkit http://www.activepdf.com
Producer:       Toolkit http://www.activepdf.com
CreationDate:   Sat Feb  4 18:42:49 2012
ModDate:        Sat Feb  4 18:42:49 2012
Tagged:         no
Form:           AcroForm
Pages:          5
Encrypted:      no
Page    1 size: 579.275 x 402.547 pts
Page    1 rot:  0
Page    2 size: 612 x 792 pts (letter)
Page    2 rot:  0
Page    3 size: 612 x 792 pts (letter)
Page    3 rot:  0
Page    4 size: 612 x 792 pts (letter)
Page    4 rot:  0
Page    5 size: 612 x 792 pts (letter)
Page    5 rot:  0
Page    1 MediaBox:     0.00     0.00   612.00   792.00
Page    1 CropBox:     15.05   374.40   594.33   776.94
Page    1 BleedBox:    15.05   374.40   594.33   776.94
Page    1 TrimBox:     15.05   374.40   594.33   776.94
Page    1 ArtBox:      15.05   374.40   594.33   776.94
Page    2 MediaBox:     0.00     0.00   612.00   792.00
Page    2 CropBox:      0.00     0.00   612.00   792.00
Page    2 BleedBox:     0.00     0.00   612.00   792.00
Page    2 TrimBox:      0.00     0.00   612.00   792.00
Page    2 ArtBox:       0.00     0.00   612.00   792.00
...
File size:      211688 bytes
Optimized:      no
PDF version:    1.3

Eu tentei muitas variações de um comando ghostscript com bandeiras -sPAPERSIZE, -dFIXEDMEDIA, -dPDFFitPage. Eu não consigo descobrir como obter a primeira página para ser carta. Eu não me importo se o conteúdo da primeira página é ampliado.

Pergunta: Como posso fazer todas as páginas do mesmo tamanho?

O motivo dessa pergunta é que temos uma nova impressora no escritório. Por motivos que não entendo completamente as versões mais recentes do CUPS ou do ghostscript, o servidor de impressão falha. Temos a capacidade de imprimir a partir de um dispositivo de armazenamento USB, mas a impressora não aceita documentos com tamanhos de página diferentes da carta.

nwhsvc
fonte

Respostas:

2

A saída do seu pdfinfo comando mostra claramente que todos suas páginas têm o mesmo tamanho: 612 x 792 pt ("MediaBox"), que é o tamanho "carta".

No entanto, a página 1 está definida para informar ao visualizador de PDF (e à impressora) para exibir apenas uma parte da área da página ("CropBox").

Se você remover as configurações CropBox (bem como as opções Art-, Bleed- e TrimBox-es) no seu PDF com uma ferramenta de sua escolha (até mesmo um editor de texto), ou se você alterá-las para os mesmos valores do MediaBox, você terá visualizadores de PDF (e impressoras) mostrando o conteúdo completo da página (mesmo que o "resto" seja apenas margens brancas). Nota: pode acontecer que haja conteúdo oculto em sua primeira página, o que se torna visível se você remover o Crop-, Trim-, Bleed- e ArtBoxes.

Kurt Pfeifle
fonte
Obrigado por apontar isso! Consegui alterar a configuração do cropbox editando o pdf diretamente. No entanto, não consigo descobrir como fazer isso com ghostscript. Você pode recomendar um comando ou outra ferramenta?
nwhsvc
1

Você pode, por exemplo usar Pdftk para dividir o documento na primeira página e na parte do tamanho correto, em seguida redimensione a página inicial com, por exemplo, GhostScript como você já tentou e finalmente mesclar o documento novamente com o Pdftk. Isso pode ser roteirizado se for uma operação comum que precisa ser feita.

Veja também https://stackoverflow.com/questions/547326/using-imagemagick-or-ghostscript-or-something-to-scale-pdf-to-fit-page para mais dicas.

Daniel Andersson
fonte
Isso não funcionou no PDF original! No entanto, eu consegui escalar outro PDF de uma página com sucesso tanto com -dFIXEDMEDIA e -dPDFFitPage. Existe uma razão pela qual o ghostscript não escalaria um PDF específico? Além disso, pdftk produziu um pdf que causou ghostscript para dar o seguinte aviso "Atenção: considerando '0000000000 XXXXX n' como uma entrada gratuita".
nwhsvc