2010-12-06 29 views
1

Je reçois l'erreur suivante lors du décodage d'une date de création:iTextSharp: Erreur lors du décodage d'un creationdate sur fichier PDF

A first chance exception of type 'System.ArgumentOutOfRangeException' 
occurred in mscorlib.dll 
Hour, Minute, and Second parameters describe an un-representable DateTime. 

Je fais pdfdate.decode(xdoc.info("creationdate"))

est ici l'info du fichier PDF:

/CreationDate (D:191010319150120) 
/Producer (Acrobat Distiller Daemon 3.01 for Solaris 2.3 and later \(SPARC\)) 
/Creator (tif_convert_2_ps\(\)) 
/Title (/tardir/tiffs/a386689.tiff) 
/ModDate (D:20010320070957) 

la date de modification semble être une date valide, mais la date de création me semble un peu bizarre à ...

Plus intrigante est que lorsque j'obtiens les propriétés de ce fichier en utilisant Adobe Reader, il montre une date valide pour le champ date de création.

Des suggestions?

Répondre

0

Le PDF Spec dit que les dates PDF sont définies ainsi:

D:YYYYMMDDHHmmSSOHH'mm 
D:191010319150120 

est 1910, Octobre (10) 31 (Halloween), 91h, 50m, 12s 0

Je crois que le " 91h "est le problème ... et le 0 final devrait être un plus ou un moins dans le cadre d'un décalage UT (la partie" HH'mm ").

Adobe est probablement plus tolérant aux pannes, peut-être MOD-24'ing les heures et ignorant le zéro. On dirait que nous devons embellir notre code pour correspondre. Par curiosité, quelle date montre Reader?

+0

Merci pour votre réponse Mark. Il montre ce qui suit: Date de création: lundi 19 mars 2001, 07:01:20 Date de modification: lundi 19 mars 2001 à 11:09:57 Voici le fichier en question si vous voulez jetez un oeil: http://edocs.nps.edu/npspubs/scholarly/theses/2000/Dec/00Dec_Gossett.pdf Merci! – user532848

+0

Wow. Cela n'a aucun sens. Doux. Merci pour le lien. –

+0

C'est vraiment bizarre ... J'ai essayé d'utiliser Foxit, mais il ne montre pas la même date qu'Adobe Reader.Il montre ce qui suit dans la date de création, Créé: 60365-154-154- 59480: 152: 11376 Modifié: 2001-03-20 06:09:07 – user532848

1

que je rencontrerai des exemple similaire trop - Cela ressemble bug Y2K me :) Remplacer "191" par "20" et vous obtenez un bon format de date ...

1

Adobe versions Distiller avant 3.02 avait un Y2K bug qui les a fait écrire des valeurs CreationDate non valides pour les fichiers créés à compter du 1er Janvier 2000. Voici un lien vers le patch qui corrige ce problème pour Distiller 3.02:

http://www.adobe.com/support/downloads/detail.jsp?ftpID=661

Votre PDF a été créé par Distiller 3.01 , donc il a le bug. Sa date de création de "191010319150120" est "19101" (par exemple, 101 ans après l'année de référence de 1900 ou 2001), "0319" pour le 19 mars, "150120" pour 15:01:20 (15:01:20) ; Je suppose que cette date/heure est UTC et que votre serveur est en retard de 8 heures UTC, provoquant l'affichage de l'heure à 07:01:20 AM le même jour.

Je ne connais pas un moyen de corriger la valeur CreationDate: les versions actuelles d'Acrobat et de Reader peuvent afficher correctement la chaîne non valide correctement, mais je doute que la fonction que vous utilisez possède ce hack. J'espère que cela t'aides.