2014-12-22 7 views
0

Я разрабатываю веб-приложение HTML5/JavaScript, которое часто работает в автономном режиме. Пользователь загружает PDF в приложение, а затем имеет возможность добавлять комментарии, которые появляются отдельно в PDF. Я использую локальное хранилище, чтобы сохранить комментарии, сделанные так, как это работает в автономном режиме, а не с использованием онлайн-базы данных. Если пользователь снова откроет тот же самый PDF-файл позже, я хотел бы загрузить все предыдущие сделанные комментарии. Для этого я предполагаю, что мне нужно будет идентифицировать нечто уникальное в конкретном PDF-файле, чтобы я мог хранить другие ценности против него в локальной базе данных хранилища. Если пользователь открывает один и тот же PDF-файл позднее, я могу запросить базу данных, чтобы увидеть, были ли сделаны комментарии к этому файлу до и, если да, отобразите их на экране.Как я могу идентифицировать что-то уникальное в отношении файла при открытии в браузере?

В настоящее время я открываю PDF, используя URL.createObjectURL(), который создает уникальный URL-адрес для доступа к файлу. Это необходимо, так как он может быть открыт в автономном режиме. Моя первоначальная мысль заключалась в том, что этот blob может использоваться как уникальный идентификатор, если он хранится в локальной базе данных хранилища, однако blob, по понятным причинам, изменяется при каждой загрузке и может меняться, если пользователь перемещает местоположение PDF на своей локальной машине. Например, открытие одного и того же файла дважды подряд приводит к: blob:null/c3ab544d-e16d-cf49-86d8-03c1d67a6ccb и blob:null/5ad4b666-e6ba-1a41-a149-d7a77f648261.

Есть ли способ записать что-то уникальное в открывшемся файле, чтобы я мог проверить, будет ли пользователь повторно открывать этот файл позднее?

+0

Может быть, файл hash? – kingdaemon

ответ

1

Учитывая, что «добавлять комментарии, которые появляются отдельно в PDF», не повлияет на сам файл (например, комментарии PDF, встроенные в новую версию файла), вы можете использовать хэш, например md5, для распознавания того же файла , Это тот же метод, чтобы увидеть, повреждены ли файлы во время загрузки.

Предостережение только в том случае, если браузер имеет доступ к содержимому файла через автономное хранилище из-за проблем с безопасностью.

+0

Интересные оговорки. Если я правильно вас понимаю, вы говорите, что проверка хеша md5 не была бы возможна, если файл был загружен в автономном режиме? К сожалению, это текущая настройка. Похоже, что потребуется другое обходное решение. – Gordonium

0

Хотя это необязательно, вы можете попробовать использовать тег PDF ID. Вы могли бы извлечь его с некоторым регулярным выражением против содержимого. Это выглядит следующим образом:

/ID[<CDB5FA9499F9C1A71B9784FD77FB5B4D><CDB5FA9499F9C1A71B9784FD77FB5B4D>] 

Из PDF Спецификация:

ID

массив

(Необязательно, но настоятельно рекомендуется, PDF 1.1) Массив из двух байт-строк, составляющих идентификатор файла (см. раздел 10.3, «Идентификаторы файлов») для файла. Две байтовые строки должны быть прямыми объектами и должны быть незашифрованными. Хотя эта запись является необязательной, ее отсутствие может помешать работе файла в некоторых рабочих процессах, зависящих от уникальных идентификаторов файлов.