Renumerar páginas de um PDF

22

Eu quero editar os metadados de um PDF digitalizado para atribuir números de página personalizados a diferentes páginas. Por exemplo, quais são as páginas 1-3 que eu posso querer chamar i, ii e iii, e quais são as páginas 4-10, quero chamar 1-7. Eu faço não quer mudar a ordem real das páginas.

Existe A) Uma maneira de fazer isso usando ferramentas gratuitas; e B) Uma maneira de fazer isso "em lote" (sem precisar renumerar cada página manualmente).

    
por MarkovCh1 26.03.2011 / 01:55

8 respostas

18

Aqui uma solução baseada em LaTeX. Ele usa o pacote pdfpages para incluir o PDF varrido (aqui chamado scan.pdf ). Os rótulos de página PDF desejados podem ser definidos usando o pacote hyperref com a opção pdfpagelabels ativada. Ele usa a macro normal \thepage como um rótulo que pode ser definido para números romanos em minúsculas. O contador de páginas é então reiniciado e alterado de volta para os números normais.

\documentclass[a4paper]{article}% or use 'letterpaper'
\usepackage{pdfpages}
\usepackage[pdfpagelabels]{hyperref}
\begin{document}
% Set lower case roman numbers (\Roman would be upper case):
\renewcommand{\thepage}{\roman{page}}
\includepdf[pages=1-3]{scan.pdf}
% Back to normal (arabic) numbers:
\renewcommand{\thepage}{\arabic{page}}
% Reset page counter to 1:
\setcounter{page}{1}
\includepdf[pages=4-]{scan.pdf}
\end{document}

Coloque o código acima em um arquivo (por exemplo, scan_mod.tex ) e compile-o com pdflatex :

# pdflatex scan_mod

Isso produzirá scan_mod.pdf . No entanto, quaisquer anotações especiais incl. os hiperlinks desaparecerão. Isso não deve ser problema nos PDFs digitalizados.

Se você precisar disso com mais frequência, poderá escrever um script que aceite o número de páginas numeradas em roman e o (s) nome (s) como argumentos e crie um arquivo temporário com o código acima, em que nome e números são variáveis, que é compilado.

    
por Martin Scharrer 09.04.2011 / 19:36
8

Você pode fazer isso com um editor de texto.

Como a resposta diz, abra um arquivo PDF com um editor de texto, pesquise /Catalog entry e, em seguida, anexe uma entrada chamada /PageLabels assim:

/PageLabels << /Nums [
0 << /P (cover) >> % labels 1st page with the string "cover"
1 << /S /r >> % numbers pages 2-6 in small roman numerals
6 << /S /D >> % numbers pages 7-x in decimal arabic numerals
]
>>

Observe que os índices de página (números de página física) começam com 0 .

É claro que você pode fazer isso automaticamente usando linguagens de script.

Padrões em PDF - Etiquetas de página possui especificações detalhadas.

    
por Akihiro HARAI 19.09.2013 / 05:51
4

Existe uma ferramenta chamada PDF Mod que é uma ferramenta gratuita para reorganizar as páginas de um PDF.

Pode ser instalado a partir do Ubuntu Software Center no Ubuntu 10.10 e superior.

Para instalar no Ubuntu 9.10 ou 10.04:

Para instalar Adicione o ppa ppa:pdfmod-team/ppa às suas fontes de software ( Veja como fazer isso ) e instale o pdfmod no centro de software

Adaptado de: link

Boa sorte: D

    
por Wilsonzaizai 26.03.2011 / 06:58
3

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
    
por sdaau 14.10.2011 / 02:24
3

O jPDF Tweak é um utilitário gráfico de código aberto que oferece numeração de página (o termo correto é "etiquetagem de página") e muitos outros para recursos avançados de edição de PDF. Ele é executado no Ubuntu e em outros sistemas operacionais.

A página Documentação fornece instruções passo a passo.

    
por CherryBerry 15.08.2014 / 08:16
1

O Openoffice / Libreoffice pode fazer o truque com a extensão pdf-import e uma macro de paginação.

Não é uma solução perfeita, mas funciona para mim (além de usar o PDF Mod - o que eu sugiro strongmente).

    
por RolandiXor 09.04.2011 / 07:36
0

Experimente o pyPdf , uma biblioteca python para manipular documentos PDF. Alguns, mas não muito, programação seria necessária.

Você também pode dar uma olhada no PDFtk , embora eu não tenha verificado se ele é compatível alterar o número da página associado a páginas individuais. Ambos estão disponíveis como pacotes no Ubuntu.

    
por loevborg 09.04.2011 / 10:21
0

Existe outro aplicativo chamado PDFEdit, hospedado na fonte forge. Página do Projeto Forge do Source - No entanto, isso não ajuda, porque não possui a funcionalidade que você precisa

    
por lazyPower 09.04.2011 / 03:28