2010-12-06 2 views
1

я получаю следующее сообщение об ошибке при декодировании даты создания:Itextsharp: Ошибка при декодировании CreationDate на PDF-файле

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

я делаю pdfdate.decode(xdoc.info("creationdate"))

Вот информация из файла 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) 

дата модификации, как представляется, действительную дату, но, дата создания выглядит любопытное странно для меня ...

Более интригующим является то, что когда я получаю свойства этого файла с помощью Adobe Reader, он показывает действительную дату для поля даты создания.

Любые предложения?

ответ

0

формата PDF Spec говорит, что даты PDF определены таким образом:

D:YYYYMMDDHHmmSSOHH'mm 
D:191010319150120 

является 1910, октябрь (10) 31 (Хэллоуин), 91h, 50м, 12с 0

я считаю, что " 91h "является проблемой ... и конечный 0 должен быть плюсом или минусом как часть UT-смещения (часть« HH'mm »).

Adobe, вероятно, более терпима к ошибкам, возможно, MOD-24 в часы и игнорирование нуля. Похоже, нам нужно подстроить наш код, чтобы он соответствовал. Из любопытства, какая дата показывает Reader?

+0

Спасибо за ответ. Он показывает следующее: Дата создания: понедельник, 19 марта 2001 г., 7:01:20 AM Дата модификации: понедельник, 19 марта 2001 г., 11:09:57 Вот этот файл, если вы хотите посмотрите: http://edocs.nps.edu/npspubs/scholarly/theses/2000/Dec/00Dec_Gossett.pdf Спасибо! – user532848 2010-12-06 21:56:44

1

я бегу в аналогичный пример тоже - Это выглядит как Y2K ошибка для меня :) Заменить «191» с «20», и вы получите хороший формат даты ...

версии
1

Adobe Distiller до 3,02 был Y2K ошибка, которая заставила их написать недопустимые значения CreationDate для файлов, созданных после 1 января 2000 года Вот ссылка на патч, который исправил эту проблему для Distiller 3.02:

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

Вашего PDF был создан Distiller 3.01 , поэтому у него есть ошибка. Его CreationDate из «191010319150120» - «19101» (например, 101 год после базового года 1900 года или 2001 год), «0319» за 19 марта, «150120» за 15:01:20 (3:01:20 PM) ; Я бы предположил, что это дата/время UTC, а ваш сервер на 8 часов меньше UTC, в результате чего время отображается в 7:01:20 утра в тот же день.

Я не знаю, как исправить значение CreationDate: текущие версии Acrobat и Reader могут четко отображать неверную строку правильно, но я сомневаюсь, что функция, которую вы используете, имеет этот хак. Надеюсь это поможет.

Смежные вопросы