Eu pretendo expandir isso em uma resposta adequada quando tiver tempo, mas aqui está a solução que encontrei, caso alguém precise disso nesse meio tempo. A idéia é usar o Ghostscript com a opção -c
para modificar o arquivo PDF usando o PostScript personalizado.
Primeiramente, você precisa saber a altura e a largura do PDF original em Pontos (existem 72 pontos em uma polegada). Você poderia usar a ferramenta "pdfinfo" para encontrar esta informação:
pdfinfo "inputFile.pdf"
Digamos que você tenha um documento A4 - A4 é 595pts × 842pts (210 mm × 297 mm).
Se você quiser adicionar uma medianiz de 10 mm (= 1 cm = 28pts) ao documento A4, então você precisa fornecer as seguintes informações ao Ghostscript:
-dDEVICEHEIGHTPOINTS=842
(altura de A4)
-dDEVICEWIDTHPOINTS=623
(= 595 + 28, ou seja, largura de A4 + a calha a ser adicionada)
{28 0 translate} {}
({deslocar páginas ímpares 28pts para a direita & 0pts para cima} {não fazer nada para páginas pares})
Nota: Especificar a largura aumentada adiciona espaço ao lado direito da página, portanto, são apenas as páginas ímpares que devem ser traduzidas - as páginas pares já estão dispostas corretamente.
Aqui está o comando completo para o Linux:
gs -q -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -sOutputFile=outputFile.pdf \
-dDEVICEWIDTHPOINTS=623 -dDEVICEHEIGHTPOINTS=842 -dFIXEDMEDIA \
-c "<< /CurrPageNum 1 def /Install { /CurrPageNum CurrPageNum 1 add def
CurrPageNum 2 mod 1 eq {28 0 translate} {} ifelse } bind >> setpagedevice" \
-f "inputFile.pdf"
Nota: Este comando torna o PDF 1 cm mais largo que o A4. Se você imprimir em A4, tudo será dimensionado para caber e a calha será um pouco mais fina que 1cm (será 9,5mm). Se isso não for bom o suficiente, você terá que fazer um pouco de álgebra para obter o deslocamento correto. Nesse caso, seria 29.8pts, em vez de 28pts, para obter uma medianiz impressa de 10,0 mm (você também precisaria definir -dDEVICEWIDTHPOINTS=624.8
). No entanto, se a medianiz for menor que ~ 2cm, provavelmente não vale a pena fazer o cálculo, especialmente considerando as tolerâncias de impressão e tamanho do papel.