2017-06-14 4 views
0

J'ouvre un fichier pdf "test.pdf" avec Vim et copie son contenu dans un autre tampon de texte que je sauvegarde sous "copy.pdf". Je ne comprends pas pourquoi "copy.pdf" est différent, peut être ouvert en pdf (le titre montre) mais la page est vide.Le contenu PDF n'est pas suffisant pour reconstruire le PDF?

La même chose se produit lorsque je lis le fichier en Javascript avec FileReader.readAsBinaryString et le réécris sur le disque, donc ce n'est pas lié à la façon dont je copie dans Vim.

Encore plus étrange, le Finder dit que la copie est en réalité 30 Ko plus grande.

Où sont les octets cachés?

+0

Chaque processus dont le résultat diffère de l'original ne crée pas une copie identique. Ainsi, vos deux processus (en utilisant vim, en utilisant JavaScript) ne sont pas appropriés pour copier des binaires. Les raisons peuvent différer. Vim est un éditeur de texte, il a donc certaines hypothèses sur la nature des données qu'il traite. PDF est un format binaire et, par conséquent, très probablement ne remplit pas ces hypothèses. Donc vim peut endommager les données dans le processus. Dans votre processus JavaScript, la lecture et l'écriture doivent respecter la nature binaire des données. Vous montrez seulement un côté de celui-ci. – mkl

Répondre

1

Habituellement, quand je vois ce genre de comportement et les pages vierges qui en résultent, c'est le résultat de l'utilisation d'un programme ou processus qui traite les informations binaires d'un PDF comme du texte sous une forme ou une autre - par exemple, Conversion LF, conversion tabulation en espace ou interprétation des données au format UTF-8 au lieu de binaire. Faire n'importe quel type de transformation ruinera les flux binaires dans un fichier PDF et provoquera l'erreur des octets de décalage dans la table de référence croisée, ce qui rendra le fichier PDF illisible. Peut-être que votre processus de réécriture sur disque fait une conversion CR/LF ou traite votre blob binaire comme non-binaire?