Acabei de encontrar um ponteiro que poderia ser possível usar ghostscript
para isso, aqui: pdftk - Adicione e edite indicadores para pdf - Unix e Linux - Stack Exchange # 18600 ; refere-se a links:
No entanto, o acima mencionado lida com marcadores - não com paginação lógica. Acontece que em pdfmarkReference.pdf , o "comando" necessário é ' /Label
' (ou ' /PAGELABEL
') - e se refere ainda ao capítulo PDFReference.pdf 8.3.1 "Etiquetas da página". Infelizmente, esse capítulo não explica necessariamente como os marcadores de pdf podem ser usados com rótulos de página - mas esta postagem explica:
O / PAGELABEL pdfmark não possui nenhuma tecla / Page; portanto, é possível definir o rótulo apenas para a página 'atual' (e, como conseqüência, apenas para uma página por vez). Como você o chama desde o início, é esperado que você defina um rótulo para a 1ª página e somente para ela.
Múltiplos / PAGELABELs para a mesma página: a referência em pdfmark diz que a última entra em vigor, portanto o resultado da sua primeira linha de comando está OK. Observe que a tecla / Page é ignorada.
Como definir rótulos de página no PostScript? Eu posso pensar em 2 métodos:
(A) A maneira 100% documentada:
Emita a / 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 mais nesse segmento:
Quanto a fazer esse trabalho; como o arquivo original é um arquivo PDF, você pode executar cada página do arquivo individualmente. Assim, você pode definir a marca de pdf PAGELABEL para a página 1, executar a página 1 a partir do arquivo original, definir o PAGELABEL para a página 2, executar a página 2 a partir do arquivo original e assim por diante.
Como o rótulo é (como SaGS), disse aplicado à página atual, isso deve definir corretamente os rótulos para cada página no arquivo PDF de saída. (ressalva: eu realmente não tentei isso)
EDIT: apenas para mostrar isso - se você o salvou como pdfmarks
arquivo:
[ /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 -1, 0 e 1 :)
Bem, talvez isso ajude em algum momento a obter um gs
script mais simples para renumerar as páginas :)
Felicidades!
EDIT2: Entendi, eu acho - use o mesmo gs
comando acima - e abaixo estão o conteúdo do pdfmarks
script, que renumerará o infile.pdf, então começa com -1, 0, 1 ... É basicamente um exemplo modificado de a referência em PDF (ver 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