50 votes

Comment modifier les numéros de page internes dans les métadonnées d'un PDF ?

J'ai un document pdf que j'ai créé par des moyens autres qu'Acrobat (impression en pdf, puis fusion de plusieurs pdf), mais j'aimerais changer manuellement les numéros de page (c'est-à-dire que les premières pages sont simplement des pages de titre, la page qui est la page de titre est la page de titre). étiqueté La "page 1" est en réalité la 7ème feuille du pdf). Quel est le moyen le plus simple (et idéalement gratuit) de faire cela ?

Pour être clair, je n'essaie pas de modifier les numéros des pages elles-mêmes, mais les numéros de page dans les "métadonnées" que le pdf stocke (les pages elles-mêmes sont déjà numérotées correctement ; je veux juste que "aller à la page 1" aille à la page étiqueté 1, qui pourrait être la feuille 7).

Pour ce que ça vaut, je suis sous Windows, mais j'ai aussi accès à des Mac.

3voto

Pkkm Points 131

La variante Java de pdftk prend en charge l'édition des étiquettes de page à partir de la version 3.1.0.

Pour l'utiliser, créez d'abord un fichier avec les étiquettes, disons qu'il s'appelle metadata.txt :

PageLabelBegin
PageLabelNewIndex: 1
PageLabelStart: 1
PageLabelPrefix: Cover
PageLabelNumStyle: NoNumber
PageLabelBegin
PageLabelNewIndex: 2
PageLabelStart: 1
PageLabelPrefix: Back Cover
PageLabelNumStyle: NoNumber
PageLabelBegin
PageLabelNewIndex: 3
PageLabelStart: 1
PageLabelNumStyle: LowercaseRomanNumerals
PageLabelBegin
PageLabelNewIndex: 27
PageLabelStart: 1
PageLabelNumStyle: DecimalArabicNumerals
  • PageLabelNewIndex est la page à partir de laquelle le style de numérotation s'applique, en comptant à partir de un.
  • PageLabelStart est le numéro de départ. Par exemple, si vous indiquez 5 ici, les pages seront numérotées 5, 6, 7, ...
  • PageLabelNumStyle peut être DecimalArabicNumerals , UppercaseRomanNumerals , LowercaseRomanNumerals , UppercaseLetters , LowercaseLetters ou NoNumber .

Une fois l'édition terminée, appliquez les métadonnées à votre fichier PDF :

pdftk book.pdf update_info metadata.txt output book-with-metadata.pdf

2voto

Brian Frost Points 6544

Pour supprimer les anciens, la méthode la plus simple et la plus multiplateforme consiste à les découper. Vous pouvez le faire, par exemple, avec BRISS.

L'ajout de nouveaux éléments à l'aide d'outils gratuits est plus délicat. Personnellement, je le ferais probablement avec pdflatex, comme dans cette réponse de StackExchange bien que cela puisse être une solution assez compliquée à moins que vous n'ayez d'autres utilisations pour pdflatex.

Je pense que c'est possible, mais avec jPdfTweak au lieu de cela.

1voto

user308637 Points 11

La méthode proposée par Dane H. fonctionne avec Acrobat Reader (ou, plus précisément, avec la version actuelle de Adobe Reader). Un petit point à noter : le champ du haut n'accepte que 8 caractères. Vous ne pouvez donc pas y entrer quelque chose comme "index des sujets" si un tel libellé a été utilisé. Vous pouvez toutefois utiliser l'élément de menu Affichage > Navigation dans la page > Aller à..., ou la touche équivalente.

Autre conseil : la spécification pdf attribue toujours des numéros de page consécutifs, donc dans le cas d'un document produit par numérisation paires de pages, les deux séries de numéros sont décalées (à moins que vous ne numérotiez laborieusement chaque page individuellement). Mais vous pouvez, sans grand effort, configurer votre document de manière à ce que la convention "aller à la page n permet d'accéder aux pages 2n et 2n+1" s'applique.

1voto

daniel Points 753

La réponse de Danes est la meilleure, les formats ont un peu changé maintenant, ceci pourrait être utile :

%PDF-1.6

29241 0 obj

<</Metadata 1685 0 R/Outlines 29461 0 R/PageLabels<</Nums[0<</S/D>>3<</S/D/St 6>>4<</S/D/St 10>>5<</S/D/St 12>>15<</S/D/St 70>>16<</S/D/St 72>>17<</S/D/St 80>>18<</S/D/St 82>>19<</S/D/St 90>>23<</S/D/St 96>>25<</S/D/St 99>>29<</S/D/St 110>>31<</S/D/St 130>>32<</S/D/St 133>>35<</S/D/St 137>>36<</S/D/St 140>>37<</S/D/St 145>>39<</S/D/St 150>>40<</S/D/St 152>>42<</S/D/St 155>>43<</S/D/St 160>>46<</S/D/St 165>>47<</S/D/St 167>>48<</S/D/St 170>>49<</S/D/St 180>>50<</S/D/St 190>>52<</S/D/St 300>>53<</S/D/St 305>>54<</S/D/St 319>>56<</S/D/St 380>>57<</S/D/St 390>>58<</S/D/St 500>>67<</S/D/St 515>>68<</S/D/St 525>>70<</S/D/St 550>>71<</S/D/St 553>>72<</S/D/St 560>>73<</S/D/St 600>>76<</S/D/St 620>>78<</S/D/St 650>>82<</S/D/St 670>>85<</S/D/St 700>>95<</S/D/St 714>>117<</S/D/St 900>>162<</S/D/St 1000>>178<</S/D/St 1200>>209<</S/D/St 1500>>263<</S/D/St 1555>>270<</S/D/St 1563>>389<</S/D/St 1681>>522<</S/D/St 1813>>]>> /PageMode/UseOutlines/Pages 29177 0 R/Type/Catalog>>

endobj

1voto

Bob Points 11

J'ai constaté que l'édition directe du fichier (tel que décompressé par pdftk) ne fonctionne pas s'il y a déjà des '/titles' dans la région '/outlines'. La technique d'édition directe décrite dans un post ci-dessus est démontrée sur Youtube : https://www.youtube.com/watch?v=zoH1Z_hSpak

Mais la fonction "mise à jour" de pdftk peut être plus intuitive (et plus fiable lorsque "/titles" existe déjà dans la région "/outlines" du fichier PDF) en éditant le fichier "doc_data.txt" utilisé ici : https://www.pdflabs.com/blog/export-and-import-pdf-bookmarks/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X