Je me demandais comment afficher et modifier le code d'un fichier PDF?
En visionnant, je ne veux pas voir le format binaire, donc je pense que ce
hexdump
n'est peut-être pas ce que je veux. J'ai essayégedit
, mais aucune méthode de codage ne peut être utilisée pour décoder le contenu PDF.En les éditant, je voudrais les rechercher
/Fit
et les changer/XYZ
par exemple par sed. Mais ma commandesed s/\/Fit/\/XYZ/ < 1.pdf > 2.pdf
ne semble pas changer l'apparence de mon PDF comme je m'y attendais, bien qu'elle ne signale aucune erreur. Je me demandais si je pouvaissed
vraiment travailler sur des fichiers PDF comme s'ils étaient en texte brut?
Le contexte de mes questions se trouve à partir de cette question . Mon système d'exploitation est Ubuntu 10.10.
!
,\b
etg
veut dire? Peut-on le faire sans perl juste avec sed?g
signifie remplacer toutes les occurrences sur chaque ligne, en sed et en perl.!
est le séparateur; vous pouvez choisir (presque) n'importe quel caractère comme séparateur de las
commande (cela va à la fois dans sed et perl).\b
signifie une limite de mot; il existe en perl mais pas en sed.Concernant votre 1ère question ("visualisation du code source, mais pas de binaire"): vous disposez de quelques options pour décompresser les flux binaires internes attachés à de nombreux objets.
Mon outil préféré pour cela est QPDF , disponible sur toutes les principales plates-formes OS. La commande suivante décompresse tous les flux et tous les flux d'objets:
Vous pouvez maintenant ouvrir votre PDF dans n'importe quel éditeur de texte. (Il peut encore y avoir des objets binaires binaires: par exemple, des fichiers de polices et des profils ICC, ce qui n'aurait pas de sens pour QPDF de se développer).
Pour recompresser à
expanded.pdf
nouveau le fichier après l'édition, vous pouvez exécuter:(Attention lors de l'édition manuelle de PDF! Vous devez en savoir beaucoup sur leur syntaxe interne pour le faire correctement. Dès que vous ajoutez ou supprimez un seul octet, vous pouvez obtenir des messages d'erreur de lecteurs PDF qui ne pourront plus ouvrir, parce que les fichiers PDF TdC interne est corrompu, qui est basé sur des calculs décalage d' octet. il suffit de remplacer
Fit
par desXYZ
cordes devrait aller bien, mais ...)la source
fix-qdf
programme qui fait partie de qpdf. Il faut quand même être un peu prudent. Voir qpdf.sourceforge.net/files/qpdf-manual.html#ref.qdffix-qdf
. Par conséquent, si vous souhaitez remplacer une chaîne par une chaîne de longueur différente, c'est possible, mais vous devez utiliser l'fix-qdf
outil. Je dirais que c'est un ajout utile à la réponse.sed
est orienté ligne, ce qui le rend peu adapté aux fichiers binaires, qui sont structurés en blocs et non en lignes.Essayez plutôt d'utiliser bbe (bbe-.sourceforge.net).
Alternativement, Emacs (GNU et XEmacs) et vim ouvrent des fichiers PDF de manière transparente. Ce n'est pas très joli, bien sûr, car il s'agit d'un texte mixte et binaire, mais c'est suffisant pour vos besoins d'édition.
Il existe un plugin Pdftk pour vim qui facilite tout, téléchargez ici (fichier zip).
Comme vous le savez probablement, les deux éditeurs ci-dessus ont de puissantes capacités de recherche et de remplacement.
De plus, la conversion du PDF en mode QDF avant facilite la modification des fichiers PDF.
la source
sed
utilisant le-b
commutateur. si cela fonctionne, j'ajouterai ceci à ma réponse.-b
, c'est spécifique à cygwin.Utilisez LibreOffice ou OpenOffice pour ouvrir le PDF, le visualiser, remplacer des choses, écrire un nouveau PDF, etc. Je pense que vous pouvez même l'utiliser à partir de la ligne de commande ou par programme s'il y a beaucoup de documents à traiter.
Notez que les fichiers PDF de certaines sources, par exemple les scanners, contiennent souvent les pages sous forme d'images plutôt que sous forme de texte, vous n'aurez donc pas de chance avec elles pour utiliser la recherche et le remplacement.
la source