Minimes PDF exemple PDF spécification
J'ai pris le minimum de PDF exemple dans la spécification PDF à partir de Spécification PDF, copié dans le bloc-notes, renommé le fichier à l'extension .pdf.
Je peux l'ouvrir avec d'autres visionneuse PDF (PDF-XChange, SumatraPDF, MuPDF). Mais quand je l'ouvre avec Adobe Reader, il est dit que le fichier est endommagé.
Je ne suis pas sûr si d'autres téléspectateurs traiter cette "cassé" fichier en tant que fichier vide ou pas.
Le fichier est censé afficher une page vierge, car elle est un exemple minimal.
En fait, j'ai modifier l'exemple minimal. Parce que quand je l'ai copier de spécification PDF pour le bloc-notes et ouvrez le .fichier txt par un Éditeur Hexadécimal, je vois une nouvelle ligne dans .txt fichier me donner 2 de l'espace. Par exemple,
1 0 obj
<< /Type /Catalog
me donne (dans l'Éditeur Hexadécimal)
1 0 obj << /Type /Catalog
qui est (en valeurs hexadécimales)
31 20 30 20 6F 62 6A 0D 0A 3C 3C 20 2F 54 79 70
65 20 2F 43 61 74 61 6C 6F 67
Les 2 espaces entre j
et <
sont 0D 0A
.
Donc je n'ai pas donné de nouvelles lignes dans le bloc-notes et modifier les valeurs dans les xref
partie.
Ci-dessous le code complet.
Savez-vous quel est le problème avec cet exemple? Pourquoi Adobe Reader dire qu'il est cassé? Est-ce parce que j'ai donné de mauvaises valeurs dans xref
?
%PDF-1.4 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [4 0 R] /Count 1 >> endobj 4 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612 792] /Contents 5 0 R /Resources << /ProcSet 6 0 R >> >> endobj 5 0 obj << /Length 35 >> stream … Page-marking operators … endstream endobj 6 0 obj [/PDF] endobj xref 0 7 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000119 00000 n 0000000176 00000 n 0000000295 00000 n 0000000373 00000 n trailer << /Size 7 /Root 1 0 R >> startxref 395 %%EOF
OriginalL'auteur user565739 | 2012-09-30
Vous devez vous connecter pour publier un commentaire.
Première: lorsque vous 'copié' l'exemple de la spécification PDF, très probablement quelques choses qui fait votre copie ne fonctionnera pas comme prévu:
En fonction de votre éditeur de texte, que la méthode probablement dû à la conversion de la nouvelle ligne de la convention de être modifié à partir de [cr]+[lf] [cr] ou vice-versa. Cela signifie que le décalage d'octet numéros dans l'objet "table des matières" (le "
xref
'- table) ne sont plus valables.Un autre problème avec le PDF code source que vous avez posté, c'est qu'il n'est pas maintenant contenir toutes les retours à la ligne (à tous les. Certains utilisateurs peuvent être en mesure de toujours silencieusement analyser la chose, mais ne le sont pas tous. Et c'est certainement à l'encontre de la spec, parce que selon la spécification, dans le chapitre 7.5.2 il est stipulé clairement que
Votre en-tête de viole cette règle.
Aussi, le "stream" dans
5 0 obj
n'est pas valable code PDF, il suffit de placer le titulaire de texte (… Page-marking operators …
). Certains utilisateurs peuvent être inclinaison quand ils viennent à travers ces "rebuts".Enfin, votre
startxref
valeur n'est pas correcte.Voici donc un fichier qui fonctionne. J'ai réparé dans un éditeur de texte, et j'ai mis ton code original comme commentaire après la
%%EOF
à des fins de comparaison et de référence:xref
dans ce fichier? Il est 396 dans un Éditeur Hexadécimal. Mais avec 396, le fichier est cassé, et 394 œuvres. Je ne sais pas la raison.Vous devez exécuter
dd bs=1 skip=394 if=this.pdf
. Cela signifie que vous avez sauté le premier 394 octets lors de dumping le fichier. Maintenant, la production devrait démarrer avecxref
sur une ligne par son propre.Quand je copie / collé de cela, j'ai dû changer le caractère "..." autour de "Page-marquage des opérateurs" pour les trois caractères "..." et le startxref à partir de 394 398. Je soupçonne que quand je copie/collé le seul caractère "..." a été munged. En élargissant à trois, une personne "." sur chaque côté de la rivière, qui a ajouté un autre de 4 octets qui m'a poussé à 398 à partir de 394 pour le début de la xref table.
Je me retrouve avec une page blanche lorsque j'essaie d'ajouter un peu de contenu, par exemple, à l'aide de "BT 10 50 Td (de Loin!)Tj ET" avec à la fois des instructions et de début/fin des balises dans des lignes séparées) stream pour objet 5 -et après le réglage de l'octet correspondant décalages. L'aperçu s'ouvre bien, mais montre juste une page blanche. Je suis l'aide de l'Aperçu ver 5 sur un BŒUF 10.6.8
Un peu plus (codée à la main) PDF exemples de jouer avec peut être trouvé ici: github.com/angea/PDF101/tree/master/handcoded.
OriginalL'auteur Kurt Pfeifle