Voici une solution de travail. Cependant, vous devrez l'ajuster en fonction de vos besoins.
Dans mon exemple, j'ai supprimé la première page d'un PDF, puis j'ai eu besoin de mettre à jour les signets pour pointer vers les emplacements corrects.
supprimer la page 1 de in.pdf:
pdftk A=in.pdf cat A2-end output temp.pdf
créer un fichier in.info à partir de in.pdf:
pdftk in.pdf dump_data > in.info
in.info doit être corrigé dans mon cas, car je supprimerai une page.
Ainsi, j'ai besoin de diminuer BookmarkPageNumber de un pour que les signets conduisent aux pages correctes.
code php:
$file = "in.info";
$data = file_get_contents($file);
foreach (explode("\n", $data) as $row) {
$tmp = explode(": ", $row);
if ($tmp[0] == "BookmarkPageNumber") {
if ($tmp[1] != "1") $tmp[1]--;
echo $tmp[0].": ".$tmp[1]."\n";
} else {
echo $row."\n";
}
}
créer final out.pdf:
pdftk temp.pdf update_info in2.info output out.pdf
testé en travaillant sur debian avec pdftk 2.01
#!/usr/bin/python output = open('res.info','w') with open('temp.info','r') as f: for line in f: if line.startswith("BookmarkPageNumber"): output.write( "BookmarkPageNumber: "+ str(int(line.split()[1])+1)+"\n") else: output.write(line)
Vous devez le faire
pdftk in.pdf dump_data > in.info
, puis ajoutez leupdate_info
paramètre lors de la génération duout.pdf
. Citant deman pdftk
:la source
dump_data_utf8
pourupdate_info_utf8
travailler.pdftk in.pdf dump_data > in.info
,pdftk in.pdf cat 1-22 43 23-42 44-end output out.pdf
etpdftk out.pdf update_info in.info output out1.pdf
il n'y a toujours pas de signets dansout1.pdf
. `En lisant attentivement la page de manuel , il indique que les
update_info
données sont prises dans n'importe quel formatdump_data
généré. Cela devrait vraisemblablement être ajusté en fonction du brassage des pages. Cela ne semble pas impossible , mais pas automatiquement.Le site PDFtk ne donne que les résultats ci-dessus et crée / modifie des signets. Tout ce que Google sait sur la question des signets en PDF et de la réorganisation, c'est les hits sur les opérations ci-dessus et les expositions lyriques sur les merveilles qu'ils proposent, et ce fil ;-).
Il semble donc que cela ne puisse pas être fait. Les commentaires suggèrent quelques possibilités, qui n'ont pas fonctionné lors de l'essai.
la source
"pdfmod" est un outil graphique simple qui permet de supprimer une ou des pages de mode d'un PDF existant. Il suffit de quelques clics. Il conserve également les informations sur le contenu et les liens croisés dans le pdf.
"pdftk" fonctionne bien et je l'utilisais depuis longtemps mais j'avais l'habitude de perdre du contenu après avoir supprimé une ou deux pages du pdf. Ces fichiers pdf qui sont testés dans "pdftk" et "pdfmod" sont créés depuis openoffice.
https://apps.fedoraproject.org/packages/pdfmod
la source
pdfmod
semble mieux quepdftk
lorsqu'il s'agit de préserver les métadonnées. Un diff deexiftool
sortie montre quepdfmod
préserve les métadonnées, maispdftk
ne conserve pas tout, même si vous utilisezdump_data_utf8
&update_info_utf8
.