Я пытаюсь проанализировать идентификатор конкретного pdf (this) с помощью iTextSharp, как указано в this answer. Но я получаю нулевой массив для ID, тогда как я вижу, что другой pdfReader (pdf.js) может читать id как 77a2a5c4fc17dc3a91a072c46fe69ec0
. Почему это поведение отличается? Должен ли я читать поле ID из какого-либо места, кроме трейлера?Разница между идентификатором PDF, прочитанным из iTextSharp и pdf.js
ответ
Открыть обычный PDF с ID в текстовом редакторе, например так:
Прямо перед тем, где он говорит startxref
, вы видите словарь (он начинается с <<
). Это трейлер словарь PDF. Одна из (необязательных) записей - это /ID
, которая представляет собой массив, содержащий две строки PDF.
Если ваш PDF-адрес имеет такую запись, ответ на вопрос Extract ID of a PDF document using iTextSharp не будет возвращен null
.
Теперь откройте PDF в текстовом редакторе:
Опять вы видите словарь (прицеп справочник) перед startxref
. Однако в этом случае словарь содержит только три записи: /Size
(количество объектов в таблице перекрестных ссылок), /Info
(ссылка на словарь, содержащий метаданные) и /Root
(ссылка на словарь каталога).
Нет записи /ID
, поэтому iText (и iTextSharp) должны возвращать null
(и вы подтвердили, что они это делают).
Теперь найдите значение 77a2a5c4fc17dc3a91a072c46fe69ec0
в формате PDF, который вы открыли в текстовом редакторе. Вы не найдете этого значения где-нибудь , потому что его просто нет!
Обобщенная: ваш вопрос Am Я ожидал прочитать поле идентификатора с некоторого места, кроме трейлера? ошибочно. Вы спрашиваете, как читать то, чего там нет. Ваш вопрос должен быть: Почему pdf.js создает идентификатор для PDF-файлов, у которых его нет, и как его получить? Ответ на первую часть является разумным: даже iText пытается создать /ID
при манипулировании PDF-документами, потому что для PDF-файла хорошая идентификация. Ответ на вторую часть: посмотрите в трейлере (но вы уже это знали).
Вывод: Основываясь на отзывах в комментариях, оказывается, что OP использует метод fingerprint()
в pdf.js. Этот метод возвращает первый элемент идентификатора if и ID. Если идентификатор не найден, возвращается хеш MD5. См. source code метода fingerprint()
в pdf.js.
- 1. Разница между идентификатором продукта и идентификатором пакета
- 2. Разница между идентификатором примечания и универсальным идентификатором
- 3. Разница между идентификатором экземпляра и идентификатором оборудования?
- 4. Разница между идентификатором и классом
- 5. Разница между идентификатором и переменной
- 6. Разница между переменной и идентификатором
- 7. Флажок и просмотрщик pdf (pdf.js)
- 8. открыть pdf через pdf.js
- 9. Разница между идентификатором клиента и идентификатором клиента в Keycloak
- 10. Разница между идентификатором группы процессов и идентификатором задания в UNIX
- 11. Разница между подключением и идентификатором пула приложений
- 12. Разница между идентификатором класса и экземпляром класса
- 13. Android: (setOnItemClickListener) Разница между позицией и идентификатором
- 14. В чем разница между идентификатором и идентификатором тега
- 15. Как использовать pdf.js закрыть PDF?
- 16. PDF.Js не загружает PDF-файл
- 17. iTextSharp разница между неявным явным NewPage
- 18. Javascript Pdf-навигация для pdf.js
- 19. PDF.js render pdf с прокруткой
- 20. визуализации PDF с помощью pdf.js и AngularJS из массива байтов
- 21. Как выбрать/загрузить между различными/несколькими PDF-файлами i pdf.js
- 22. Разница между «сертифицированным» и «подписанным» для PDF
- 23. Разница между «компиляцией PDF» и knit2pdf
- 24. iTextSharp PDF Reader Точность
- 25. Itextsharp создал файл PDF
- 26. Itextsharp pdf parsing
- 27. iTextSharp производит недействителен PDF
- 28. Разница между PageNumber и PageCount в документе iTextSharp
- 29. Разница между реальным идентификатором пользователя, эффективным идентификатором пользователя и сохраненным идентификатором пользователя
- 30. PDF checkboxes с iTextsharp
* Прямо перед тем, где указано startxref, вы видите словарь (он начинается с '<<'). Это * Каталог * или * коренной словарь * PDF * - ehem, no. это словарь * трейлера *, словарь * Catalog/root * - это тот, который содержит ссылки на ** Root **. – mkl
Er ... Было раннее утро после напряженного дня в Силиконовой долине. Спасибо, что исправили меня, mkl и @rhens. –
Итак, вы предполагаете, что идентификатор просто отсутствует в документе, а pdf.js либо дает какое-то случайное значение, либо генерирует его, используя некоторую логику? – labyrinth