Acabei de encontrar um ponteiro para que fosse possível usar ghostscript
para isso, aqui: pdftk - Adicione e edite marcadores para pdf - Unix e Linux - Stack Exchange # 18600 ; refere-se a links:
No entanto, os itens acima tratam de marcadores - não com paginação lógica. Acontece de pdfmarkReference.pdf , o comando "necessário" "é ' /Label
' (ou ' /PAGELABEL
') - e refere-se ainda a PDFReference .pdf capítulo 8.3.1 "Rótulos de página". Infelizmente, esse capítulo não explica necessariamente como os marcadores de páginas podem ser usados com rótulos de página - mas esse post faz:
O / PAGELABEL pdfmark não possui nenhuma chave / Page, portanto, é possível definir
etiqueta apenas para a página "atual" (e, como conseqüência, somente para
página de cada vez). Como você o chama no começo, é esperado
para definir um rótulo para a primeira página e apenas para ela.
Vários / PAGELABELs para a mesma página: a referência do pdfmark diz
A última entra em vigor, então o resultado da sua primeira linha de comando é OK.
Observe que a tecla / Page é ignorada.
Como definir rótulos de página de PostScript? Eu posso pensar em 2 métodos:
(A) A maneira 100% documentada:
Emita um / PAGELABEL como parte de cada página.
(B) A maneira menos documentada:
...
gswin32c -sDEVICE=pdfwrite -sOutputFile=50pages.pdf -dNOPAUSE
GS>[/_objdef {pl} /type /dict /OBJ pdfmark
GS>[{pl} <</Nums [0 <</P (Page ) /S /r /St 10>> 2 <<>>]>> /PUT pdfmark
GS>[{Catalog} <</PageLabels {pl}>> /PUT pdfmark
GS>50 { showpage } repeat
GS>quit
... e ainda nesse segmento:
Como fazer isso funcionar; desde que o arquivo original é um arquivo PDF, você pode executar cada
página do arquivo individualmente. Então você pode definir o pdfmark PAGELABEL para a página
1, execute a página 1 do arquivo original, configure o PAGELABEL para a página 2, execute a página 2
do arquivo original e assim por diante.
Como o rótulo (como o SaGS) é aplicado à página atual, isso deve
definir corretamente os rótulos para cada página no arquivo PDF de saída.
(ressalva: eu não tentei isso de verdade)
EDIT: apenas para mostrar isso - se você tem isso salvo como pdfmarks
file:
[ /Label (-1) /PAGELABEL pdfmark
showpage
[ /Label (0) /PAGELABEL pdfmark
showpage
[ /Label (1) /PAGELABEL pdfmark
showpage
... e você chama:
gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=outfile.pdf infile.pdf pdfmarks
... então você terá três páginas vazias anexadas no final de infile.pdf
, rotuladas como -1, 0 e 1 :)
Bem, talvez isso ajude algum dia a obter um script gs
mais simples para renumerar as páginas :)
Felicidades!
EDIT2: Entendi, acho - use o mesmo comando gs
como acima - e abaixo está o conteúdo do script pdfmarks
, que irá renumerar o infile.pdf, então começa com -1, 0, 1 ... É basicamente um exemplo modificado da referência em PDF (veja os comentários para mais):
% Type name (Optional) The type of PDF object that this dictionary describes; if present, must be PageLabel for a page label dictionary.
% S name (Optional) The numbering style to be used for the numeric portion of each page label:
% D Decimal arabic numerals
% R Uppercase roman numerals
% r Lowercase roman numerals
% A Uppercase letters (A to Z for the first 26 pages, AA to ZZ for the next 26, and so on)
% a Lowercase letters (a to z for the first 26 pages, aa to zz for the next 26, and so on)
% P text string (Optional) The label prefix for page labels in this range.
% St integer (Optional) The value of the numeric portion for the first page label in the range. Subsequent pages will be numbered sequentially from this value, which must be greater than or equal to 1. Default value: 1.
% renumber first 25 pages - push each by 10, and add prefix:
% [/_objdef {pl} /type /dict /OBJ pdfmark
% [{pl} <</Nums [0 <</P (Page ) /S /D /St 10>> 25 <<>>]>> /PUT pdfmark
% [{Catalog} <</PageLabels {pl}>> /PUT pdfmark
[/_objdef {pl} /type /dict /OBJ pdfmark
[{pl} <</Nums [ 0 << /P (-1) >> % just label -1 (no style) for pg 0;
1 << /P (0) >> % just label 0 (no style) for pg 1;
2 << /S /D /St 1 >> % decimal style, start from 1, for pg2 and on.
]>> /PUT pdfmark
[{Catalog} <</PageLabels {pl}>> /PUT pdfmark